diff --git a/src/mol-canvas3d/canvas3d.ts b/src/mol-canvas3d/canvas3d.ts
index 3c97dcd0acfde1ee9eb7de153f1eef3ad644084b..ba93151515c2e176dfa498b31b3be93fc470598b 100644
--- a/src/mol-canvas3d/canvas3d.ts
+++ b/src/mol-canvas3d/canvas3d.ts
@@ -141,16 +141,16 @@ namespace Canvas3D {
 
         function mark(loci: Loci, action: MarkerAction, repr?: Representation.Any) {
             let changed = false
-            reprRenderObjects.forEach((_, _repr) => {
-                if (!repr || repr === _repr) {
-                    changed = _repr.mark(loci, action) || changed
-                }
-            })
+            if (repr) {
+                changed = repr.mark(loci, action)
+            } else {
+                reprRenderObjects.forEach((_, _repr) => { changed = _repr.mark(loci, action) || changed })
+            }
             if (changed) {
                 scene.update(true)
                 const prevPickDirty = pickDirty
                 draw(true)
-                pickDirty = prevPickDirty // picking buffers should not have changed
+                pickDirty = prevPickDirty // marking does not change picking buffers
             }
         }