diff --git a/src/mol-plugin/behavior/static/representation.ts b/src/mol-plugin/behavior/static/representation.ts
index 50104160abaddd17f365a5a39fbec2eefbe6c069..7d9a7f351ab44173f51bc4518208f70b64298811 100644
--- a/src/mol-plugin/behavior/static/representation.ts
+++ b/src/mol-plugin/behavior/static/representation.ts
@@ -76,11 +76,18 @@ export function UpdateRepresentationVisibility(ctx: PluginContext) {
     ctx.state.data.events.cell.stateUpdated.subscribe(e => {
         const cell = e.state.cells.get(e.ref)!;
         if (!SO.isRepresentation3D(cell.obj)) return;
-        updateVisibility(cell, cell.obj.data.repr);
-        ctx.canvas3d?.syncVisibility();
+
+        if (updateVisibility(cell, cell.obj.data.repr)) {
+            ctx.canvas3d?.syncVisibility();
+        }
     });
 }
 
 function updateVisibility(cell: StateObjectCell, r: Representation<any>) {
-    r.setState({ visible: !cell.state.isHidden });
+    if (r.state.visible === cell.state.isHidden) {
+        r.setState({ visible: !cell.state.isHidden });
+        return true;
+    } else {
+        return false;
+    }
 }
\ No newline at end of file