diff --git a/src/mol-canvas3d/canvas3d.ts b/src/mol-canvas3d/canvas3d.ts
index b8d7d83cfb68def49df123cec5ae7a58a349f2a8..4eedba503de3d7bff3a3cb4efc7bcfc2cab82f05 100644
--- a/src/mol-canvas3d/canvas3d.ts
+++ b/src/mol-canvas3d/canvas3d.ts
@@ -126,6 +126,7 @@ namespace Canvas3D {
 
         let pickDirty = true
         let isPicking = false
+        let isUpdating = false
         let drawPending = false
         let lastRenderTime = -1
 
@@ -182,7 +183,7 @@ namespace Canvas3D {
         }
 
         function render(variant: RenderVariant, force: boolean) {
-            if (isPicking) return false
+            if (isPicking || isUpdating) return false
 
             let didRender = false
             controls.update()
@@ -285,6 +286,7 @@ namespace Canvas3D {
         }
 
         function add(repr: Representation.Any) {
+            isUpdating = true
             const oldRO = reprRenderObjects.get(repr)
             const newRO = new Set<RenderObject>()
             repr.renderObjects.forEach(o => newRO.add(o))
@@ -299,6 +301,7 @@ namespace Canvas3D {
             reprCount.next(reprRenderObjects.size)
             boundingSphereHelper.update()
             scene.update()
+            isUpdating = false
             requestDraw(true)
         }
 
@@ -329,11 +332,13 @@ namespace Canvas3D {
                 }
                 const renderObjects = reprRenderObjects.get(repr)
                 if (renderObjects) {
+                    isUpdating = true
                     renderObjects.forEach(o => scene.remove(o))
                     reprRenderObjects.delete(repr)
                     reprCount.next(reprRenderObjects.size)
                     boundingSphereHelper.update()
                     scene.update()
+                    isUpdating = false
                     requestDraw(true)
                 }
             },
diff --git a/src/mol-gl/webgl/buffer.ts b/src/mol-gl/webgl/buffer.ts
index 8f2c0e71939f3b342235fc75f2fd6724aac71527..5c2d5b0801427b8f586be8f8c9695a55a32f124b 100644
--- a/src/mol-gl/webgl/buffer.ts
+++ b/src/mol-gl/webgl/buffer.ts
@@ -142,9 +142,6 @@ export function createBuffer(ctx: WebGLContext, array: ArrayType, itemSize: Buff
 
         destroy: () => {
             if (destroyed) return
-            gl.bindBuffer(_bufferType, _buffer);
-            // set size to 1 before deleting
-            (gl as WebGLRenderingContext).bufferData(_bufferType, 1, _usageHint) // TODO remove cast when webgl2 types are fixed
             gl.deleteBuffer(_buffer)
             destroyed = true
             ctx.bufferCount -= 1