diff --git a/source/backend/configbackend.h b/source/backend/configbackend.h
index d27f1d1..9e31ed1 100644
--- a/source/backend/configbackend.h
+++ b/source/backend/configbackend.h
@@ -167,7 +167,7 @@
 #define SMALL_TOLERANCE 0.001
 #define MAX_DISTANCE 1.0e7
 
-#define MIN_ISECT_DEPTH 1.0e-4
+#define MIN_ISECT_DEPTH 0.0
 
 #ifndef DBL_FORMAT_STRING
 	#define DBL_FORMAT_STRING "%lf"
diff --git a/source/backend/render/trace.cpp b/source/backend/render/trace.cpp
index bb57de8..86622a1 100644
--- a/source/backend/render/trace.cpp
+++ b/source/backend/render/trace.cpp
@@ -362,7 +362,7 @@ bool Trace::FindIntersection(ObjectPtr object, Intersection& isect, const Ray& r
 			{
 				tmpDepth = depthstack->top().Depth;
 				// TODO FIXME - This was SMALL_TOLERANCE, but that's too rough for some scenes [cjc] need to check what it was in the old code [trf]
-				if(tmpDepth < closest && (ray.IsSubsurfaceRay() || tmpDepth >= MIN_ISECT_DEPTH))
+				if(tmpDepth < closest && (ray.IsSubsurfaceRay() || tmpDepth > MIN_ISECT_DEPTH))
 				{
 					isect = depthstack->top();
 					closest = tmpDepth;
@@ -415,7 +415,7 @@ bool Trace::FindIntersection(ObjectPtr object, Intersection& isect, const Ray& r
 			{
 				tmpDepth = depthstack->top().Depth;
 				// TODO FIXME - This was SMALL_TOLERANCE, but that's too rough for some scenes [cjc] need to check what it was in the old code [trf]
-				if(tmpDepth < closest && (ray.IsSubsurfaceRay() || tmpDepth >= MIN_ISECT_DEPTH) && postcondition(ray, object, tmpDepth))
+				if(tmpDepth < closest && (ray.IsSubsurfaceRay() || tmpDepth > MIN_ISECT_DEPTH) && postcondition(ray, object, tmpDepth))
 				{
 					isect = depthstack->top();
 					closest = tmpDepth;
diff --git a/source/backend/scene/objects.cpp b/source/backend/scene/objects.cpp
index e29be14..3a61c5b 100644
--- a/source/backend/scene/objects.cpp
+++ b/source/backend/scene/objects.cpp
@@ -134,7 +134,7 @@ bool Find_Intersection(Intersection *isect, ObjectPtr object, const Ray& ray, Tr
 			{
 				tmpDepth = depthstack->top().Depth;
 				// TODO FIXME - This was SMALL_TOLERANCE, but that's too rough for some scenes [cjc] need to check what it was in the old code [trf]
-				if(tmpDepth < closest && (ray.IsSubsurfaceRay() || tmpDepth >= MIN_ISECT_DEPTH))
+				if(tmpDepth < closest && (ray.IsSubsurfaceRay() || tmpDepth > MIN_ISECT_DEPTH))
 				{
 					*isect = depthstack->top();
 					closest = tmpDepth;
@@ -188,7 +188,7 @@ bool Find_Intersection(Intersection *isect, ObjectPtr object, const Ray& ray, co
 			{
 				tmpDepth = depthstack->top().Depth;
 				// TODO FIXME - This was SMALL_TOLERANCE, but that's too rough for some scenes [cjc] need to check what it was in the old code [trf]
-				if(tmpDepth < closest && (ray.IsSubsurfaceRay() || tmpDepth >= MIN_ISECT_DEPTH) && postcondition(ray, object, tmpDepth))
+				if(tmpDepth < closest && (ray.IsSubsurfaceRay() || tmpDepth > MIN_ISECT_DEPTH) && postcondition(ray, object, tmpDepth))
 				{
 					*isect = depthstack->top();
 					closest = tmpDepth;
@@ -234,7 +234,7 @@ bool Find_Intersection(Intersection *isect, ObjectPtr object, const Ray& ray, Ob
 			{
 				tmpDepth = depthstack->top().Depth;
 				// TODO FIXME - This was SMALL_TOLERANCE, but that's too rough for some scenes [cjc] need to check what it was in the old code [trf]
-				if(tmpDepth < closest && (ray.IsSubsurfaceRay() || tmpDepth >= MIN_ISECT_DEPTH))
+				if(tmpDepth < closest && (ray.IsSubsurfaceRay() || tmpDepth > MIN_ISECT_DEPTH))
 				{
 					*isect = depthstack->top();
 					closest = tmpDepth;
@@ -280,7 +280,7 @@ bool Find_Intersection(Intersection *isect, ObjectPtr object, const Ray& ray, Ob
 			{
 				tmpDepth = depthstack->top().Depth;
 				// TODO FIXME - This was SMALL_TOLERANCE, but that's too rough for some scenes [cjc] need to check what it was in the old code [trf]
-				if(tmpDepth < closest && (ray.IsSubsurfaceRay() || tmpDepth >= MIN_ISECT_DEPTH) && postcondition(ray, object, tmpDepth))
+				if(tmpDepth < closest && (ray.IsSubsurfaceRay() || tmpDepth > MIN_ISECT_DEPTH) && postcondition(ray, object, tmpDepth))
 				{
 					*isect = depthstack->top();
 					closest = tmpDepth;
@@ -961,21 +961,21 @@ bool ObjectBase::Intersect_BBox(BBoxDirection variant, const BBOX_VECT& origin,
 	switch(variant)
 	{
 		case BBOX_DIR_X0Y0Z0: // 000
-			return Intersect_BBox_Dir<0, 0, 0>(BBox, origin, invdir, MIN_ISECT_DEPTH, maxd);
+			return Intersect_BBox_Dir<0, 0, 0>(BBox, origin, invdir, SMALL_TOLERANCE, maxd);
 		case BBOX_DIR_X0Y0Z1: // 001
-			return Intersect_BBox_Dir<0, 0, 1>(BBox, origin, invdir, MIN_ISECT_DEPTH, maxd);
+			return Intersect_BBox_Dir<0, 0, 1>(BBox, origin, invdir, SMALL_TOLERANCE, maxd);
 		case BBOX_DIR_X0Y1Z0: // 010
-			return Intersect_BBox_Dir<0, 1, 0>(BBox, origin, invdir, MIN_ISECT_DEPTH, maxd);
+			return Intersect_BBox_Dir<0, 1, 0>(BBox, origin, invdir, SMALL_TOLERANCE, maxd);
 		case BBOX_DIR_X0Y1Z1: // 011
-			return Intersect_BBox_Dir<0, 1, 1>(BBox, origin, invdir, MIN_ISECT_DEPTH, maxd);
+			return Intersect_BBox_Dir<0, 1, 1>(BBox, origin, invdir, SMALL_TOLERANCE, maxd);
 		case BBOX_DIR_X1Y0Z0: // 100
-			return Intersect_BBox_Dir<1, 0, 0>(BBox, origin, invdir, MIN_ISECT_DEPTH, maxd);
+			return Intersect_BBox_Dir<1, 0, 0>(BBox, origin, invdir, SMALL_TOLERANCE, maxd);
 		case BBOX_DIR_X1Y0Z1: // 101
-			return Intersect_BBox_Dir<1, 0, 1>(BBox, origin, invdir, MIN_ISECT_DEPTH, maxd);
+			return Intersect_BBox_Dir<1, 0, 1>(BBox, origin, invdir, SMALL_TOLERANCE, maxd);
 		case BBOX_DIR_X1Y1Z0: // 110
-			return Intersect_BBox_Dir<1, 1, 0>(BBox, origin, invdir, MIN_ISECT_DEPTH, maxd);
+			return Intersect_BBox_Dir<1, 1, 0>(BBox, origin, invdir, SMALL_TOLERANCE, maxd);
 		case BBOX_DIR_X1Y1Z1: // 111
-			return Intersect_BBox_Dir<1, 1, 1>(BBox, origin, invdir, MIN_ISECT_DEPTH, maxd);
+			return Intersect_BBox_Dir<1, 1, 1>(BBox, origin, invdir, SMALL_TOLERANCE, maxd);
 	}
 
 	return false; // unreachable
