diff --git a/src/TBmeshWin.cc b/src/TBmeshWin.cc
index 44c24d0d283fb83b0fbc870181e115ebf86414cc..43222150e52cb3c5621dbbb9b659994c656bca5d 100644
--- a/src/TBmeshWin.cc
+++ b/src/TBmeshWin.cc
@@ -507,7 +507,7 @@ TBmeshWin::draw_surface(Surfaces* sf, GLfloat *&vbobuf, bool wf )
 
   glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
   sf->zsort( context(), stride, on_tr );
-  char cmode = CMODE( facetshading, dataBuffer->ele_based() );
+  char cmode = CMODE( facetshading, dataBuffer && dataBuffer->ele_based() );
   if( !on_tr ) 
     // all elements are opaque
     sf->buffer( s_colour, cs, showData?((cmode==CM_FLAT)?sf->to_elem(data).data():data):NULL,
@@ -553,7 +553,7 @@ TBmeshWin::draw_sorted_elements( RenderTris &rd, vector<vtx_z> &elems, bool newT
           edata[e.s] = sf->to_elem(data);
       }
       sf->buffer_elem( e.i, scol, cs, showData?(facetshading?edata[e.s].data():data):NULL,
-              dataopac->dop+Surface, vbobuf, CMODE(facetshading,dataBuffer->ele_based()) );
+              dataopac->dop+Surface, vbobuf, CMODE(facetshading,dataBuffer && dataBuffer->ele_based()) );
     }
     rd.update_nodalbuff();
   }