diff --git a/b_asic/GUI/drag_button.py b/b_asic/GUI/drag_button.py
index 85cfd7347dc4951e303ce7a846e5038d0aa9c20b..bbdcf8ddb2e9d787a1846aa65818ab2214311907 100644
--- a/b_asic/GUI/drag_button.py
+++ b/b_asic/GUI/drag_button.py
@@ -222,5 +222,8 @@ class DragButton(QPushButton):
         if self in self._window.pressed_operations:
             self._window.pressed_operations.remove(self)
 
-        if self in self._window.dragOperationSceneDict.keys():
+        if self in self._window.dragOperationSceneDict:
             del self._window.dragOperationSceneDict[self]
+
+        if self.operation in self._window.operationDragDict:
+            del self._window.operationDragDict[self.operation]
diff --git a/test/test_gui.py b/test/test_gui.py
index ec977a0c5fdb6e3493c52c2352b91f0f068d16d4..8f7f3989c9771bfba36901d6d9767a625aa73e1a 100644
--- a/test/test_gui.py
+++ b/test/test_gui.py
@@ -23,3 +23,32 @@ def test_load(qtbot, datadir):
     assert not widget.sfg_dict
 
     widget.exit_app()
+
+
+def test_flip(qtbot, datadir):
+    widget = GUI.MainWindow()
+    qtbot.addWidget(widget)
+    widget._load_from_file(datadir.join('twotapfir.py'))
+    sfg = widget.sfg_dict['twotapfir']
+    op = sfg.find_by_name("cmul2")
+    dragbutton = widget.operationDragDict[op[0]]
+    assert not dragbutton.is_flipped()
+    dragbutton._flip()
+    assert dragbutton.is_flipped()
+
+    widget.exit_app()
+
+
+def test_sfg_invalidated_by_remove_of_operation(qtbot, datadir):
+    widget = GUI.MainWindow()
+    qtbot.addWidget(widget)
+    widget._load_from_file(datadir.join('twotapfir.py'))
+    sfg = widget.sfg_dict['twotapfir']
+    ops_before_remove = len(widget.operationDragDict)
+    op = sfg.find_by_name("cmul2")
+    dragbutton = widget.operationDragDict[op[0]]
+    dragbutton.remove()
+    assert not widget.sfg_dict
+    assert ops_before_remove -1 == len(widget.operationDragDict)
+
+    widget.exit_app()