diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0d9bc61ae81788741d433282bf743e973be34fae..8e61db992ffa986600026f5ad5d896e48d5ec8c0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,7 @@ Note that since we don't clearly distinguish between a public and private interf
 - Bind shared textures only once per pass, not for each render item
 - Fix missing 'material' annotation for some uniforms, causing unnecessary uniform updates
 - Remove use of ``isnan`` in impostor shaders, not needed and causing slowdown
+- Avoid using ``flat`` qualifier in shaders, causing slowdown
 
 ## [v3.11.0] - 2022-07-04
 
diff --git a/src/mol-gl/shader/chunks/common-frag-params.glsl.ts b/src/mol-gl/shader/chunks/common-frag-params.glsl.ts
index 3f49073d4250d0973d2a05558171a6ec58c177e4..ed80baa099f4e2a9e6ca991a87b7d712fba841aa 100644
--- a/src/mol-gl/shader/chunks/common-frag-params.glsl.ts
+++ b/src/mol-gl/shader/chunks/common-frag-params.glsl.ts
@@ -14,10 +14,10 @@ uniform int uMarkingType;
     uniform vec3 uClipObjectScale[dClipObjectCount];
 
     #if defined(dClipping)
-        #if __VERSION__ == 100
+        #if __VERSION__ == 100 || defined(dClippingType_instance)
             varying float vClipping;
         #else
-            flat in float vClipping;
+            flat in float vClipping; // avoid if possible, causes slowdown, ASR
         #endif
     #endif
 #endif
@@ -32,10 +32,10 @@ uniform int uMarkingType;
 
 #if defined(dNeedsMarker)
     uniform float uMarker;
-    #if __VERSION__ == 100
+    #if __VERSION__ == 100 || defined(dMarkerType_instance)
         varying float vMarker;
     #else
-        flat in float vMarker;
+        flat in float vMarker; // avoid if possible, causes slowdown, ASR
     #endif
 #endif
 
diff --git a/src/mol-gl/shader/chunks/common-vert-params.glsl.ts b/src/mol-gl/shader/chunks/common-vert-params.glsl.ts
index a0175b56aa4147e237f9f47c4524860158bab982..e93faa764c6a41085262c46bebf8266d71dd1cdc 100644
--- a/src/mol-gl/shader/chunks/common-vert-params.glsl.ts
+++ b/src/mol-gl/shader/chunks/common-vert-params.glsl.ts
@@ -21,10 +21,10 @@ uniform int uPickType;
     #if defined(dClipping)
         uniform vec2 uClippingTexDim;
         uniform sampler2D tClipping;
-        #if __VERSION__ == 100
+        #if __VERSION__ == 100 || defined(dClippingType_instance)
             varying float vClipping;
         #else
-            flat out float vClipping;
+            flat out float vClipping; // avoid if possible, causes slowdown, ASR
         #endif
     #endif
 #endif
@@ -33,10 +33,10 @@ uniform int uPickType;
     uniform float uMarker;
     uniform vec2 uMarkerTexDim;
     uniform sampler2D tMarker;
-    #if __VERSION__ == 100
+    #if __VERSION__ == 100 || defined(dMarkerType_instance)
         varying float vMarker;
     #else
-        flat out float vMarker;
+        flat out float vMarker; // avoid if possible, causes slowdown, ASR
     #endif
 #endif