diff --git a/src/mol-gl/shader-code.ts b/src/mol-gl/shader-code.ts
index 850e8596c941dd581cbf312b994784dda47ab9ab..8f8ff84b6af9913ea3e40974fcd48e21a078cf36 100644
--- a/src/mol-gl/shader-code.ts
+++ b/src/mol-gl/shader-code.ts
@@ -37,7 +37,6 @@ import assign_color_varying from './shader/chunks/assign-color-varying.glsl'
 import assign_group from './shader/chunks/assign-group.glsl'
 import assign_marker_varying from './shader/chunks/assign-marker-varying.glsl'
 import assign_material_color from './shader/chunks/assign-material-color.glsl'
-import assign_normal from './shader/chunks/assign-normal.glsl'
 import assign_position from './shader/chunks/assign-position.glsl'
 import assign_size from './shader/chunks/assign-size.glsl'
 import check_picking_alpha from './shader/chunks/check-picking-alpha.glsl'
@@ -63,7 +62,6 @@ const ShaderChunks: { [k: string]: string } = {
     assign_group,
     assign_marker_varying,
     assign_material_color,
-    assign_normal,
     assign_position,
     assign_size,
     check_picking_alpha,
diff --git a/src/mol-gl/shader/chunks/assign-normal.glsl.ts b/src/mol-gl/shader/chunks/assign-normal.glsl.ts
deleted file mode 100644
index 686968b97eb340b7306fd1c8ce05cdffd4083f9e..0000000000000000000000000000000000000000
--- a/src/mol-gl/shader/chunks/assign-normal.glsl.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-export default `
-#if defined(dFlatShaded) && defined(enabledStandardDerivatives)
-    vec3 fdx = dFdx(vViewPosition);
-    vec3 fdy = dFdy(vViewPosition);
-    vec3 normal = -normalize(cross(fdx, fdy));
-#else
-    vec3 normal = -normalize(vNormal);
-    #ifdef dDoubleSided
-        normal = normal * (float(frontFacing) * 2.0 - 1.0);
-    #endif
-#endif
-`
\ No newline at end of file
diff --git a/src/mol-gl/shader/mesh.frag.ts b/src/mol-gl/shader/mesh.frag.ts
index bf7c0183a2a646aa128b4452286579292d2d29e6..d2c65dcf51a4bd19391ac66915432968d9f3e8d6 100644
--- a/src/mol-gl/shader/mesh.frag.ts
+++ b/src/mol-gl/shader/mesh.frag.ts
@@ -25,7 +25,11 @@ void main() {
         bool frontFacing = dot(vNormal, vViewPosition) < 0.0;
     #endif
 
-    interior = !frontFacing; // TODO take dFlipSided into account
+    #if defined(dFlipSided)
+        interior = frontFacing;
+    #else
+        interior = !frontFacing;
+    #endif
 
     #include assign_material_color
 
@@ -38,7 +42,14 @@ void main() {
         #ifdef dIgnoreLight
             gl_FragColor = material;
         #else
-            #include assign_normal
+            #if defined(dFlatShaded) && defined(enabledStandardDerivatives)
+                vec3 normal = -faceNormal;
+            #else
+                vec3 normal = -normalize(vNormal);
+                #ifdef dDoubleSided
+                    normal = normal * (float(frontFacing) * 2.0 - 1.0);
+                #endif
+            #endif
             #include apply_light_color
         #endif