diff --git a/contrib/MeshQualityOptimizer/MeshQualityOptimizer.cpp b/contrib/MeshQualityOptimizer/MeshQualityOptimizer.cpp
index 90794527f877e2b76248f6a3dceafa474ca95abf..0c76ca9f93d1e8bc0f7b7f2fd4797dadf685da3a 100644
--- a/contrib/MeshQualityOptimizer/MeshQualityOptimizer.cpp
+++ b/contrib/MeshQualityOptimizer/MeshQualityOptimizer.cpp
@@ -27,6 +27,7 @@ struct QualPatchDefParameters : public MeshOptPatchDef
   virtual int inPatch(const SPoint3 &badBary, double limDist,
                       MElement *el, GEntity* gEnt) const;
 private:
+  bool _onlyValidity;
   bool _excludeQuad, _excludeHex, _excludePrism, _excludeBL;
   double _idealJacMin, _invCondNumMin;
   double _distanceFactor;
@@ -35,6 +36,7 @@ private:
 
 QualPatchDefParameters::QualPatchDefParameters(const MeshQualOptParameters &p)
 {
+  _onlyValidity = p.onlyValidity;
   _excludeQuad = p.excludeQuad;
   _excludeHex = p.excludeHex;
   _excludePrism = p.excludePrism;
@@ -73,12 +75,16 @@ double QualPatchDefParameters::elBadness(MElement *el, GEntity* gEnt) const
       if (itBLEl != blc->_toFirst.end()) return 1.;
     }
   }
-//  double jMin, jMax;
-//  el->idealJacRange(jMin, jMax);
-//  return jMin-_idealJacMin;
-  double iCNMin, iCNMax;
-  el->signedInvCondNumRange(iCNMin, iCNMax);
-  return iCNMin-_invCondNumMin;
+  if (_onlyValidity) {
+    double jMin, jMax;
+    el->idealJacRange(jMin, jMax);
+    return jMin-_idealJacMin;
+  }
+  else {
+    double iCNMin, iCNMax;
+    el->signedInvCondNumRange(iCNMin, iCNMax);
+    return iCNMin-_invCondNumMin;
+  }
 }