diff --git a/src/collision/shapes/TriangleShape.cpp b/src/collision/shapes/TriangleShape.cpp
index f2150e05..2a4bb869 100644
--- a/src/collision/shapes/TriangleShape.cpp
+++ b/src/collision/shapes/TriangleShape.cpp
@@ -182,8 +182,7 @@ bool TriangleShape::raycast(const Ray& ray, RaycastInfo& raycastInfo, Collider*
 
     if (hitFraction < decimal(0.0) || hitFraction > ray.maxFraction) return false;
 
-    Vector3 localHitNormal = (mPoints[1] - mPoints[0]).cross(mPoints[2] - mPoints[0]);
-    if (localHitNormal.dot(pq) > decimal(0.0)) localHitNormal = -localHitNormal;
+    Vector3 localHitNormal = mNormal.dot(pq) > decimal(0.0) ? mNormal : -mNormal;
 
     raycastInfo.body = collider->getBody();
     raycastInfo.collider = collider;