diff --git a/modules/gfx/src/shader/basic_hf_vs.glsl b/modules/gfx/src/shader/basic_hf_vs.glsl
index 4dbe147a6a9a9261d34038de21107c36efbf8f58..80324bf1d7a4764f719de0bff3f9dc5775b3f6e1 100644
--- a/modules/gfx/src/shader/basic_hf_vs.glsl
+++ b/modules/gfx/src/shader/basic_hf_vs.glsl
@@ -17,7 +17,10 @@ void main()
   // hemisphere lighting contribution
   vec3 ec_pos = vec3(gl_ModelViewMatrix* gl_Vertex);
   if(lighting_flag) {
-    vec3 normal = normalize(gl_NormalMatrix * gl_Normal);
+    vec3 normal = vec3(0,0,1);
+    if(dot(gl_Normal,gl_Normal)>0.001) {
+      normal = normalize(gl_NormalMatrix * gl_Normal);
+    }
     vec3 l_dir  = normalize(gl_LightSource[0].position.xyz); // assume directional vector
     float a  = 0.5+0.5*dot(normal,l_dir);
     gl_FrontColor.rgb = mix(ground_color, sky_color, a).rgb;
diff --git a/modules/gfx/src/shader/dumpnorm_vs.glsl b/modules/gfx/src/shader/dumpnorm_vs.glsl
index f11d00259225fad6e365dd9929659af3a4012842..f4cc4a1b43079dbd4ce92c5e101db7cec3d56d47 100644
--- a/modules/gfx/src/shader/dumpnorm_vs.glsl
+++ b/modules/gfx/src/shader/dumpnorm_vs.glsl
@@ -1,7 +1,10 @@
 void main()
 {
   gl_Position = ftransform();
-  vec3 normal = gl_NormalMatrix * gl_Normal;
+  vec3 normal = vec3(0,0,1);
+  if(dot(gl_Normal,gl_Normal)>0.001) {
+    normal = gl_NormalMatrix * gl_Normal;
+  }
   gl_TexCoord[0].stp=normal;
 }
 
diff --git a/modules/gfx/src/shader/toon_vs.glsl b/modules/gfx/src/shader/toon_vs.glsl
index 1913f445eaf04f43bdce4d9e9dea6a4021777e8c..3eb50da66c4c31edbee7d197fa2e21e8a2b87bf4 100644
--- a/modules/gfx/src/shader/toon_vs.glsl
+++ b/modules/gfx/src/shader/toon_vs.glsl
@@ -7,7 +7,10 @@ void main()
   // for some reason, the fog and z coordinate are sign toggled...
   gl_FogFragCoord = -ec_Pos.z;
 
-  vec3 normal = normalize(gl_NormalMatrix * gl_Normal);
+  vec3 normal = vec3(0,0,1);
+  if(dot(gl_Normal,gl_Normal)>0.001) {
+    normal = normalize(gl_NormalMatrix * gl_Normal);
+  }
   // since a directional light is used, the position is not needed
   gl_TexCoord[0].stp=normal;