diff --git a/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp b/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp
index e8cdf9de65f9dc6aecf81d6419aa805372044192..4322850bbeaee9e7d1ffd1fd0e137c96126c0bec 100644
--- a/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp
+++ b/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp
@@ -108,7 +108,7 @@ Mesh::Mesh(const std::map<MElement*,GEntity*> &element2entity,
     _invStraightJac.resize(nEl(),1.);
     double dumJac[3][3];
     for (int iEl = 0; iEl < nEl(); iEl++)
-      _invStraightJac[iEl] = 1. / _el[iEl]->getPrimaryJacobian(0.,0.,0.,dumJac);
+      _invStraightJac[iEl] = 1. / fabs(_el[iEl]->getPrimaryJacobian(0.,0.,0.,dumJac));
   }
 
 }