diff --git a/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp b/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp
index f1675bdd2695d06762f120677b071ec1e5e7c5e8..29e0cb3297797b6438cff98c04e6f8ca1cb230cd 100644
--- a/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp
+++ b/source/RobotAPI/components/ArViz/Coin/Visualizer.cpp
@@ -383,6 +383,7 @@ namespace armarx::viz
             {
                 std::unique_lock<std::mutex> lock(stateMutex);
                 storage = stateStorage;
+                selection->deselectAll();
                 root->removeAllChildren();
                 layers.data.clear();
                 pulledUpdates.revision = 0;
@@ -579,6 +580,11 @@ namespace armarx::viz
 
     void CoinVisualizer::onSelection(SoPath* path)
     {
+        if (state != CoinVisualizerState::RUNNING)
+        {
+            return;
+        }
+
         ElementInteractionData* id = findInteractionDataOnPath(path);
         if (id == nullptr)
         {
@@ -623,6 +629,11 @@ namespace armarx::viz
 
     void CoinVisualizer::onDeselection(SoPath* path)
     {
+        if (state != CoinVisualizerState::RUNNING)
+        {
+            return;
+        }
+
         ElementInteractionData* id = findInteractionDataOnPath(path);
         if (id == nullptr)
         {