diff --git a/src/mol-canvas3d/canvas3d.ts b/src/mol-canvas3d/canvas3d.ts
index 7ac00cc96b1a8ec89bab5ce2018e05b923e3d157..4c1ec427a6485262252022450b2be60eb858927f 100644
--- a/src/mol-canvas3d/canvas3d.ts
+++ b/src/mol-canvas3d/canvas3d.ts
@@ -360,12 +360,12 @@ namespace Canvas3D {
                 helper.handle.scene.update(void 0, true);
                 helper.camera.scene.update(void 0, true);
                 const prevPickDirty = pickHelper.dirty;
-                draw(true);
+                draw(true, true);
                 pickHelper.dirty = prevPickDirty; // marking does not change picking buffers
             }
         }
 
-        function render(force: boolean) {
+        function render(force: boolean, allowMulti: boolean) {
             if (webgl.isContextLost) return false;
 
             let resized = false;
@@ -396,7 +396,7 @@ namespace Canvas3D {
                 }
 
                 if (MultiSamplePass.isEnabled(p.multiSample)) {
-                    if (!cameraChanged) {
+                    if (!cameraChanged && allowMulti && !controls.props.spin) {
                         while (!multiSampleHelper.render(renderer, cam, scene, helper, true, p.transparentBackground, p));
                     } else {
                         multiSampleHelper.render(renderer, cam, scene, helper, true, p.transparentBackground, p);
@@ -416,9 +416,9 @@ namespace Canvas3D {
         let currentTime = 0;
         let drawPaused = false;
 
-        function draw(force?: boolean) {
+        function draw(force?: boolean, allowMulti?: boolean) {
             if (drawPaused) return;
-            if (render(!!force) && notifyDidDraw) {
+            if (render(!!force, !!allowMulti) && notifyDidDraw) {
                 didDraw.next(now() - startTime as now.Timestamp);
             }
         }