diff --git a/components/renderers/cpp/src/triangle_render.cu b/components/renderers/cpp/src/triangle_render.cu
index ccd50b456d02de3e59e2ae8c8e97724922fb78c3..21c565ccc8a042f45e95cf0c5e4b745b90430b74 100644
--- a/components/renderers/cpp/src/triangle_render.cu
+++ b/components/renderers/cpp/src/triangle_render.cu
@@ -90,6 +90,17 @@ __device__ static
 			barycentricCoord.z >= 0.0 && barycentricCoord.z <= 1.0;
  }
 
+ /**
+ * For a given barycentric coordinate, compute the corresponding z position
+ * (i.e. depth) on the triangle.
+ */
+__device__ static
+float getZAtCoordinate(const float3 &barycentricCoord, const float (&tri)[3]) {
+	return (barycentricCoord.x * tri[0]
+		+ barycentricCoord.y * tri[1]
+		+ barycentricCoord.z * tri[2]);
+}
+
 /*
  * Convert source screen position to output screen coordinates.
  */
@@ -155,7 +166,8 @@ __device__ static
 				float new_depth = (maxlen == 0.0f) ? d[0] : (d[0]*dist1 + d[1]*dist2 + d[2]*dist3) / (dist1+dist2+dist3);
 				//if (new_depth < params.camera.minDepth || new_depth > params.camera.maxDepth) continue;*/
 
-				float new_depth = d[0];
+				//float new_depth = d[0]; //(A > 0) ? (B > 0) ? 6.0f : 5.0f : (B > 0) ? 4.0f : 3.0f;
+				float new_depth = getZAtCoordinate(baryCentricCoordinate, d);
 
 				atomicMin(&depth_out(sx,sy), int(new_depth*1000.0f));
 			}