diff --git a/Mesh/BackgroundMesh.cpp b/Mesh/BackgroundMesh.cpp
index 6683773ff9a611cec71cd66146d7f861c61c15e5..05ac6295d8a582bd6c85a948b07f26e06deea342 100644
--- a/Mesh/BackgroundMesh.cpp
+++ b/Mesh/BackgroundMesh.cpp
@@ -1,4 +1,4 @@
-// $Id: BackgroundMesh.cpp,v 1.23 2007-09-04 13:47:02 remacle Exp $
+// $Id: BackgroundMesh.cpp,v 1.24 2007-09-06 16:04:25 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -184,15 +184,15 @@ double BGM_MeshSize(GEntity *ge, double U, double V, double X, double Y, double
   double l3 = CTX.lc;
   double l4 = lc_field.empty() ? MAX_LC : lc_field(X, Y, Z);
 
+  // use the field unconstrained by other characteristic lengths
+  if(l4 < MAX_LC && !CTX.mesh.constrained_bgmesh)
+    return l4 * CTX.mesh.lc_factor;
+
   if(CTX.mesh.lc_from_curvature && ge->dim() < 3)
     l1 = LC_MVertex_CURV(ge, U, V);
 
-  if(l4 < MAX_LC && CTX.mesh.constrained_bgmesh)
-    return std::min(l4,l1) * CTX.mesh.lc_factor;
-
   if(ge->dim() < 2) 
     l2 = LC_MVertex_PNTS(ge, U, V);
-
   
   //  printf("l1 = %12.5E l2 = %12.5E l4 = %12.5E\n",l1,l2,l4);