diff --git a/shapes/trianglemesh.cpp b/shapes/trianglemesh.cpp
index 7a17942..b30bb90 100644
--- a/shapes/trianglemesh.cpp
+++ b/shapes/trianglemesh.cpp
@@ -342,7 +342,7 @@ Point Triangle::Sample(float u1, float u2,
 	const Point &p2 = mesh->p[v[1]];
 	const Point &p3 = mesh->p[v[2]];
 	Point p = b1 * p1 + b2 * p2 + (1.f - b1 - b2) * p3;
-	Normal n = Normal(Cross(p2-p1, p3-p1));
+	Normal n = Normal(Cross(p3-p1, p2-p1));
 	*Ns = Normalize(n);
 	if (reverseOrientation) *Ns *= -1.f;
 	return p;