diff --git a/src/mol-gl/webgl/context.ts b/src/mol-gl/webgl/context.ts
index 2b3edcf6fe520a300336e3a841a4d980c73d7a43..b849f9f9ae06d4120d3576d4f6be6936d128708d 100644
--- a/src/mol-gl/webgl/context.ts
+++ b/src/mol-gl/webgl/context.ts
@@ -137,7 +137,6 @@ export interface WebGLContext {
 
     currentProgramId: number
     currentMaterialId: number
-    currentRenderVariant: string
 
     bufferCount: number
     framebufferCount: number
@@ -266,7 +265,6 @@ export function createContext(gl: GLRenderingContext): WebGLContext {
 
         currentProgramId: -1,
         currentMaterialId: -1,
-        currentRenderVariant: '',
 
         bufferCount: 0,
         framebufferCount: 0,
diff --git a/src/mol-gl/webgl/render-item.ts b/src/mol-gl/webgl/render-item.ts
index 108cfdbf2e874710bcd1434b9ae0bf6538a6f845..3b924260b61f9d506afb444526325edb8da206e3 100644
--- a/src/mol-gl/webgl/render-item.ts
+++ b/src/mol-gl/webgl/render-item.ts
@@ -130,6 +130,7 @@ export function createRenderItem(ctx: WebGLContext, drawMode: DrawMode, shaderCo
     const valueChanges = createValueChanges()
 
     let destroyed = false
+    let currentProgramId = -1
 
     return {
         id,
@@ -140,13 +141,12 @@ export function createRenderItem(ctx: WebGLContext, drawMode: DrawMode, shaderCo
             const program = programs[variant].value
             const vertexArray = vertexArrays[variant]
             program.setUniforms(uniformValueEntries)
-            if (ctx.currentRenderVariant !== variant) {
-                ctx.currentMaterialId = -1
-                ctx.currentRenderVariant = variant
-            }
-            if (materialId === -1 || materialId !== ctx.currentMaterialId) {
-                // console.log('materialId changed or -1', materialId)
+            if (program.id !== currentProgramId ||
+                materialId === -1 || materialId !== ctx.currentMaterialId
+            ) {
+                // console.log('program.id changed or materialId changed/-1', materialId)
                 program.setUniforms(materialUniformValueEntries)
+                currentProgramId = program.id
                 ctx.currentMaterialId = materialId
             }
             program.bindTextures(textures)