diff --git a/Geo/GRegion.cpp b/Geo/GRegion.cpp
index 7716690c0dd98ff0c0c218f782ca0f3c2c33007a..241b19ebde079395b81a216fb9f8b4b9f437a813 100644
--- a/Geo/GRegion.cpp
+++ b/Geo/GRegion.cpp
@@ -174,6 +174,7 @@ void GRegion::resetMeshAttributes()
   meshAttributes.method = MESH_UNSTRUCTURED;
   meshAttributes.extrude = 0;
   meshAttributes.QuadTri = NO_QUADTRI;
+  meshAttributes.meshSize = MAX_LC;
 }
 
 SBoundingBox3d GRegion::bounds(bool fast)
diff --git a/Geo/GRegion.h b/Geo/GRegion.h
index 1376baa51b3ffcd9f62a55e62b32afd40db803e2..37e608f9597fabb3da711eff636241f62e71cebd 100644
--- a/Geo/GRegion.h
+++ b/Geo/GRegion.h
@@ -147,8 +147,15 @@ public:
     std::vector<GVertex *> corners;
     // structured/unstructured coupling using pyramids
     int QuadTri;
+    // global mesh size constraint for the volume
+    double meshSize;
   } meshAttributes;
 
+  virtual double getMeshSize() const
+  {
+    return meshAttributes.meshSize;
+  }
+
   // a array for accessing the transfinite vertices using a triplet of
   // indices
   std::vector<std::vector<std::vector<MVertex *> > > transfinite_vertices;
diff --git a/Mesh/meshGRegionNetgen.cpp b/Mesh/meshGRegionNetgen.cpp
index 4e3951a0ca114d6528ffb9dc62c0edd0d464e638..833f8e13b2801fff236095b29d805843a0b2c5f4 100644
--- a/Mesh/meshGRegionNetgen.cpp
+++ b/Mesh/meshGRegionNetgen.cpp
@@ -14,6 +14,7 @@
 #include "MTriangle.h"
 #include "MTetrahedron.h"
 #include "ExtrudeParams.h"
+#include "BackgroundMeshTools.h"
 #include "Context.h"
 
 #if defined(HAVE_NETGEN)
@@ -317,7 +318,9 @@ void meshGRegionNetgen(GRegion *gr)
   meshNormalsPointOutOfTheRegion(gr);
   std::vector<MVertex *> numberedV;
   Ng_Mesh *ngmesh = buildNetgenStructure(gr, false, numberedV);
-  Ng_GenerateVolumeMesh(ngmesh, CTX::instance()->mesh.lcMax);
+  SPoint3 pt = gr->bounds().center();
+  double lc = BGM_MeshSize(gr, 0, 0, pt.x(), pt.y(), pt.z());
+  Ng_GenerateVolumeMesh(ngmesh, lc);
   TransferVolumeMesh(gr, ngmesh, numberedV);
   Ng_DeleteMesh(ngmesh);
   Ng_Exit();
@@ -351,7 +354,9 @@ void optimizeMeshGRegionNetgen::operator()(GRegion *gr, bool always)
   deMeshGRegion dem;
   dem(gr);
   // optimize mesh
-  Ng_OptimizeVolumeMesh(ngmesh, CTX::instance()->mesh.lcMax);
+  SPoint3 pt = gr->bounds().center();
+  double lc = BGM_MeshSize(gr, 0, 0, pt.x(), pt.y(), pt.z());
+  Ng_OptimizeVolumeMesh(ngmesh, lc);
   TransferVolumeMesh(gr, ngmesh, numberedV);
   Ng_DeleteMesh(ngmesh);
   Ng_Exit();