diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp
index db2545bc9a9dddec23c16a055791208f8c2c5e7b..343de43776da64e26ffb228b53d8461b7b1976f7 100644
--- a/Graphics/Mesh.cpp
+++ b/Graphics/Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Mesh.cpp,v 1.33 2001-06-28 17:42:08 geuzaine Exp $
+// $Id: Mesh.cpp,v 1.34 2001-07-31 10:41:38 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -74,6 +74,33 @@ void Draw_Mesh (Mesh *M) {
 
   if(CTX.mesh.hidden) glEnable(GL_POLYGON_OFFSET_FILL);
 
+  // draw the bbox of the mesh in fast redraw mode if there is no geometry
+  if(!CTX.mesh.draw && !Tree_Nbr(M->Points)){
+    glColor4ubv((GLubyte*)&CTX.color.fg);
+    glBegin(GL_LINE_LOOP);
+    glVertex3d(CTX.min[0], CTX.min[1], CTX.min[2]);
+    glVertex3d(CTX.max[0], CTX.min[1], CTX.min[2]);
+    glVertex3d(CTX.max[0], CTX.max[1], CTX.min[2]);
+    glVertex3d(CTX.min[0], CTX.max[1], CTX.min[2]);
+    glEnd();    
+    glBegin(GL_LINE_LOOP);
+    glVertex3d(CTX.min[0], CTX.min[1], CTX.max[2]);
+    glVertex3d(CTX.max[0], CTX.min[1], CTX.max[2]);
+    glVertex3d(CTX.max[0], CTX.max[1], CTX.max[2]);
+    glVertex3d(CTX.min[0], CTX.max[1], CTX.max[2]);
+    glEnd();    
+    glBegin(GL_LINES);
+    glVertex3d(CTX.min[0], CTX.min[1], CTX.min[2]);
+    glVertex3d(CTX.min[0], CTX.min[1], CTX.max[2]);
+    glVertex3d(CTX.max[0], CTX.min[1], CTX.min[2]);
+    glVertex3d(CTX.max[0], CTX.min[1], CTX.max[2]);
+    glVertex3d(CTX.max[0], CTX.max[1], CTX.min[2]);
+    glVertex3d(CTX.max[0], CTX.max[1], CTX.max[2]);
+    glVertex3d(CTX.min[0], CTX.max[1], CTX.min[2]);
+    glVertex3d(CTX.min[0], CTX.max[1], CTX.max[2]);
+    glEnd();    
+  }
+
   switch(M->status) {
   case 3 :
     if(CTX.mesh.draw &&