diff --git a/src/mol-canvas3d/canvas3d.ts b/src/mol-canvas3d/canvas3d.ts
index 420ca3987ebabc1009d174f894bf765ad608fe46..e803e1e18137fb68787e7cc4d36db8507eb2201e 100644
--- a/src/mol-canvas3d/canvas3d.ts
+++ b/src/mol-canvas3d/canvas3d.ts
@@ -54,7 +54,7 @@ interface Canvas3D {
     animate: () => void
     pick: () => void
     identify: (x: number, y: number) => Promise<PickingId | undefined>
-    mark: (loci: Loci, action: MarkerAction) => void
+    mark: (loci: Loci, action: MarkerAction, repr?: Representation.Any) => void
     getLoci: (pickingId: PickingId) => { loci: Loci, repr?: Representation.Any }
 
     readonly didDraw: BehaviorSubject<now.Timestamp>
@@ -133,10 +133,12 @@ namespace Canvas3D {
             return { loci, repr }
         }
 
-        function mark(loci: Loci, action: MarkerAction) {
+        function mark(loci: Loci, action: MarkerAction, repr?: Representation.Any) {
             let changed = false
-            reprRenderObjects.forEach((roSet, repr) => {
-                changed = repr.mark(loci, action) || changed
+            reprRenderObjects.forEach((_, _repr) => {
+                if (!repr || repr === _repr) {
+                    changed = _repr.mark(loci, action) || changed
+                }
             })
             if (changed) {
                 // console.log('changed')