diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp
index ef1d3af007046028465fa32d1325da2c8ed93fa4..772ac25ea604daa2ce2b82b6280640bca389113a 100644
--- a/Geo/GModel.cpp
+++ b/Geo/GModel.cpp
@@ -742,16 +742,22 @@ SBoundingBox3d GModel::bounds(bool aroundVisible)
 {
   std::vector<GEntity*> entities;
   getEntities(entities);
-  // using the mesh vertices for now; should use entities[i]->bounds() instead
   SBoundingBox3d bb;
-  for(unsigned int i = 0; i < entities.size(); i++)
+  for(unsigned int i = 0; i < entities.size(); i++){
     if(!aroundVisible || entities[i]->getVisibility()){
-      if(entities[i]->dim() == 0)
-        bb += static_cast<GVertex*>(entities[i])->xyz();
-      else
-        for(unsigned int j = 0; j < entities[i]->mesh_vertices.size(); j++)
-          bb += entities[i]->mesh_vertices[j]->point();
+      if(entities[i]->getNativeType() == GEntity::OpenCascadeModel){
+        bb += entities[i]->bounds();
+      }
+      else{
+        // using the mesh vertices for now
+        if(entities[i]->dim() == 0)
+          bb += static_cast<GVertex*>(entities[i])->xyz();
+        else
+          for(unsigned int j = 0; j < entities[i]->mesh_vertices.size(); j++)
+            bb += entities[i]->mesh_vertices[j]->point();
+      }
     }
+  }
   return bb;
 }