diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp
index 069c9a456c3abb4da8daf1cd03832ef6604ad8cf..975926910b4670b39fa5af845f6778aa35be8c75 100644
--- a/Graphics/Mesh.cpp
+++ b/Graphics/Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Mesh.cpp,v 1.56 2003-01-23 20:19:20 geuzaine Exp $
+// $Id: Mesh.cpp,v 1.57 2003-02-14 04:02:30 geuzaine Exp $
 //
 // Copyright (C) 1997 - 2003 C. Geuzaine, J.-F. Remacle
 //
@@ -341,6 +341,8 @@ void Draw_Simplex_Volume (void *a, void *b){
     Z[i] = Zc + CTX.mesh.explode * (s->V[i]->Pos.Z - Zc);
   }
 
+  if(CTX.mesh.shade) glDisable(GL_LIGHTING);
+
   if(CTX.mesh.volumes && !(fulldraw && CTX.mesh.shade)){
     glBegin(GL_LINES);
     glVertex3d(X[1], Y[1], Z[1]);
@@ -392,6 +394,8 @@ void Draw_Simplex_Volume (void *a, void *b){
     gl2psDisable(GL2PS_LINE_STIPPLE);
   }
 
+  if(CTX.mesh.shade) glEnable(GL_LIGHTING);
+
   if(!fulldraw) return ;
 
   double n[4], x1x0, y1y0, z1z0, x2x0, y2y0, z2z0;
@@ -504,6 +508,8 @@ void Draw_Simplex_Surface_Common(Simplex *s, double *pX, double *pY, double *pZ,
       glColor4ubv((GLubyte*)&CTX.color.mesh.line);
     }
 
+    if(CTX.mesh.shade) glDisable(GL_LIGHTING);
+
     if(pX && pY && pZ){ // using precomputed vertices
       glBegin(GL_LINE_LOOP);
       for(i=0 ; i<K*(1+L) ; i++){
@@ -520,13 +526,17 @@ void Draw_Simplex_Surface_Common(Simplex *s, double *pX, double *pY, double *pZ,
 	glEnd();    
       }
       else{
+	glBegin(GL_LINE_LOOP);
 	for(i=0 ; i<K ; i++){
 	  glVertex3d(s->V[i]->Pos.X,s->V[i]->Pos.Y,s->V[i]->Pos.Z);
 	  glVertex3d(s->VSUP[i]->Pos.X,s->VSUP[i]->Pos.Y,s->VSUP[i]->Pos.Z);
 	}
+	glEnd();    
       }
     }
 
+    if(CTX.mesh.shade) glEnable(GL_LIGHTING);
+
   }
 
   if(CTX.mesh.color_carousel){
@@ -740,6 +750,8 @@ void Draw_Simplex_Curves(void *a,void *b){
   else
     glColor4ubv((GLubyte*)&CTX.color.mesh.line);
 
+  if(CTX.mesh.shade) glDisable(GL_LIGHTING);
+
   if(CTX.mesh.lines){
     glBegin(GL_LINES);
     glVertex3d(X[0], Y[0], Z[0]);
@@ -768,7 +780,7 @@ void Draw_Simplex_Curves(void *a,void *b){
     Draw_Vector(DRAW_POST_ARROW, 0, Xc,Yc,Zc,mm,m[0],m[1],m[2],NULL);
   }
   
-
+  if(CTX.mesh.shade) glEnable(GL_LIGHTING);
 
 }
 
@@ -809,6 +821,8 @@ void Draw_Hexahedron_Volume (void *a, void *b){
     Z[i] = Zc + CTX.mesh.explode * (h->V[i]->Pos.Z - Zc);
   }
 
+  if(CTX.mesh.shade) glDisable(GL_LIGHTING);
+
   glBegin(GL_LINE_LOOP);
   glVertex3d(X[0], Y[0], Z[0]);
   glVertex3d(X[1], Y[1], Z[1]);
@@ -882,6 +896,8 @@ void Draw_Hexahedron_Volume (void *a, void *b){
     gl2psDisable(GL2PS_LINE_STIPPLE);
   }
 
+  if(CTX.mesh.shade) glEnable(GL_LIGHTING);
+
 }
 
 void Draw_Prism_Volume (void *a, void *b){
@@ -920,6 +936,8 @@ void Draw_Prism_Volume (void *a, void *b){
     Y[i] = Yc + CTX.mesh.explode * (p->V[i]->Pos.Y - Yc);
     Z[i] = Zc + CTX.mesh.explode * (p->V[i]->Pos.Z - Zc);
   }
+
+  if(CTX.mesh.shade) glDisable(GL_LIGHTING);
   
   glBegin(GL_LINE_LOOP);
   glVertex3d(X[0], Y[0], Z[0]);
@@ -984,6 +1002,8 @@ void Draw_Prism_Volume (void *a, void *b){
     gl2psDisable(GL2PS_LINE_STIPPLE);
   }
 
+  if(CTX.mesh.shade) glEnable(GL_LIGHTING);
+
 }
 
 void Draw_Pyramid_Volume (void *a, void *b){
@@ -1023,6 +1043,8 @@ void Draw_Pyramid_Volume (void *a, void *b){
     Z[i] = Zc + CTX.mesh.explode * (p->V[i]->Pos.Z - Zc);
   }
   
+  if(CTX.mesh.shade) glDisable(GL_LIGHTING);
+
   glBegin(GL_LINE_LOOP);
   glVertex3d(X[0], Y[0], Z[0]);
   glVertex3d(X[1], Y[1], Z[1]);
@@ -1047,6 +1069,8 @@ void Draw_Pyramid_Volume (void *a, void *b){
     Draw_String(Num);
   }
 
+  if(CTX.mesh.shade) glEnable(GL_LIGHTING);
+
 }
 
 
diff --git a/Graphics/PostElement.cpp b/Graphics/PostElement.cpp
index bcc44e41695707fc781fa90f87cc2654e809d4ff..da6a4be22f0a7628ccc9dc96694b32866cf876c5 100644
--- a/Graphics/PostElement.cpp
+++ b/Graphics/PostElement.cpp
@@ -1,4 +1,4 @@
-// $Id: PostElement.cpp,v 1.7 2003-02-05 01:35:08 geuzaine Exp $
+// $Id: PostElement.cpp,v 1.8 2003-02-14 04:02:30 geuzaine Exp $
 //
 // Copyright (C) 1997 - 2003 C. Geuzaine, J.-F. Remacle
 //
@@ -51,6 +51,8 @@ void Draw_ElementBoundary(int type, Post_View *View, double *X, double *Y, doubl
   int k;
   double xx[8], yy[8], zz[8];
 
+  if(View->Light) glDisable(GL_LIGHTING);
+
   glColor4ubv((GLubyte*)&CTX.color.fg);
   switch(type){
   case POINT :
@@ -71,7 +73,6 @@ void Draw_ElementBoundary(int type, Post_View *View, double *X, double *Y, doubl
       yy[k] = Y[k]+Raise[1][k] ;
       zz[k] = Z[k]+Raise[2][k] ;
     }
-    if(View->Light) glDisable(GL_LIGHTING);
     glBegin(GL_LINES);
     glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[1], yy[1], zz[1]);
     glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[2], yy[2], zz[2]);
@@ -80,7 +81,6 @@ void Draw_ElementBoundary(int type, Post_View *View, double *X, double *Y, doubl
     glVertex3d(xx[1], yy[1], zz[1]); glVertex3d(xx[3], yy[3], zz[3]);
     glVertex3d(xx[2], yy[2], zz[2]); glVertex3d(xx[3], yy[3], zz[3]);
     glEnd();
-    if(View->Light) glEnable(GL_LIGHTING);
     break;
   case QUADRANGLE :
     glBegin(GL_LINE_LOOP);
@@ -94,7 +94,6 @@ void Draw_ElementBoundary(int type, Post_View *View, double *X, double *Y, doubl
       yy[k] = Y[k]+Raise[1][k] ;
       zz[k] = Z[k]+Raise[2][k] ;
     }
-    if(View->Light) glDisable(GL_LIGHTING);
     glBegin(GL_LINES);
     glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[1], yy[1], zz[1]);
     glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[3], yy[3], zz[3]);
@@ -109,7 +108,6 @@ void Draw_ElementBoundary(int type, Post_View *View, double *X, double *Y, doubl
     glVertex3d(xx[5], yy[5], zz[5]); glVertex3d(xx[6], yy[6], zz[6]);
     glVertex3d(xx[6], yy[6], zz[6]); glVertex3d(xx[7], yy[7], zz[7]);
     glEnd();
-    if(View->Light) glEnable(GL_LIGHTING);
     break;
   case PRISM :
     for(k=0 ; k<6 ; k++){
@@ -117,7 +115,6 @@ void Draw_ElementBoundary(int type, Post_View *View, double *X, double *Y, doubl
       yy[k] = Y[k]+Raise[1][k] ;
       zz[k] = Z[k]+Raise[2][k] ;
     }
-    if(View->Light) glDisable(GL_LIGHTING);
     glBegin(GL_LINES);
     glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[1], yy[1], zz[1]);
     glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[2], yy[2], zz[2]);
@@ -129,7 +126,6 @@ void Draw_ElementBoundary(int type, Post_View *View, double *X, double *Y, doubl
     glVertex3d(xx[3], yy[3], zz[3]); glVertex3d(xx[5], yy[5], zz[5]);
     glVertex3d(xx[4], yy[4], zz[4]); glVertex3d(xx[5], yy[5], zz[5]);
     glEnd();
-    if(View->Light) glEnable(GL_LIGHTING);
     break;
   case PYRAMID :
     for(k=0 ; k<5 ; k++){
@@ -137,7 +133,6 @@ void Draw_ElementBoundary(int type, Post_View *View, double *X, double *Y, doubl
       yy[k] = Y[k]+Raise[1][k] ;
       zz[k] = Z[k]+Raise[2][k] ;
     }
-    if(View->Light) glDisable(GL_LIGHTING);
     glBegin(GL_LINES);
     glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[1], yy[1], zz[1]);
     glVertex3d(xx[1], yy[1], zz[1]); glVertex3d(xx[2], yy[2], zz[2]);
@@ -148,9 +143,10 @@ void Draw_ElementBoundary(int type, Post_View *View, double *X, double *Y, doubl
     glVertex3d(xx[3], yy[3], zz[3]); glVertex3d(xx[4], yy[4], zz[4]);
     glVertex3d(xx[2], yy[2], zz[2]); glVertex3d(xx[4], yy[4], zz[4]);
     glEnd();
-    if(View->Light) glEnable(GL_LIGHTING);
     break;
   }
+
+  if(View->Light) glEnable(GL_LIGHTING);
 }
 
 void SaturateValues(int saturate, double min, double max,
@@ -667,7 +663,7 @@ void Draw_ScalarPyramid(Post_View *View, int preproNormals,
   static int error=0 ;
   if(!error){
     error = 1;
-    Msg(GERROR, "Pyramid drawing not implemented yet...");
+    Msg(WARNING, "Pyramid drawing not implemented yet...");
   }
 }