diff --git a/agui2/src/Graphics/Connection/Connection.cpp b/agui2/src/Graphics/Connection/Connection.cpp
index 426357230d3f67b362b88b2232c0a341d90231fe..31ad08447cc0db32588c4a5a8e0671d341cacfbe 100644
--- a/agui2/src/Graphics/Connection/Connection.cpp
+++ b/agui2/src/Graphics/Connection/Connection.cpp
@@ -26,6 +26,9 @@ Connection::Connection(OutputConnectionBox* origin, InputConnectionBox* target)
 
     originModel->addOutput(targetModel, target->getSlot());
     targetModel->setInput(target->getSlot(), originModel);
+
+    origin->addConnection(this);
+    target->setConnection(this);
 }
 
 QRectF Connection::boundingRect() const {
@@ -101,6 +104,12 @@ void Connection::recalculateBoundingRect(const QPointF& a, const QPointF& b) {
 }
 
 void Connection::destroy() {
+    auto* originModel = originConnectionBox->getParent()->getModelBox();
+    auto* targetModel = targetConnectionBox->getParent()->getModelBox();
+
+    originModel->removeOutput(targetModel, targetConnectionBox->getSlot());
+    targetModel->setInput(targetConnectionBox->getSlot(), nullptr);
+
     auto removed = this->originConnectionBox->connections.erase(this);
     Q_ASSERT(removed > 0);
 
diff --git a/agui2/src/Graphics/Connection/ConnectionBox.cpp b/agui2/src/Graphics/Connection/ConnectionBox.cpp
index 97b48b0085859da760a7e0c534c8f3163f07c8ed..3d1926813370c6aeb55978f7af068c612ba9be53 100644
--- a/agui2/src/Graphics/Connection/ConnectionBox.cpp
+++ b/agui2/src/Graphics/Connection/ConnectionBox.cpp
@@ -79,9 +79,7 @@ void ConnectionBox::mouseReleaseEvent(QGraphicsSceneMouseEvent* event) {
         auto* origin = dynamic_cast<OutputConnectionBox*>(a);
         auto* target = dynamic_cast<InputConnectionBox*>(b);
 
-        auto connection = new Connection(origin, target);
-        origin->addConnection(connection);
-        target->setConnection(connection);
+        new Connection(origin, target);
     }
 }
 
diff --git a/agui2/src/MainWindow.cpp b/agui2/src/MainWindow.cpp
index 34c6ae213ecb45bb04d0a6b4ce774d16f3369f8f..70805df34d02204e3a3a9c30c7257cb8389bb9d2 100644
--- a/agui2/src/MainWindow.cpp
+++ b/agui2/src/MainWindow.cpp
@@ -201,9 +201,7 @@ void MainWindow::on_actionOpen_triggered() {
 
             auto* toConnectionBox = toConnectionBoxes[slot];
 
-            auto* connection = new Connection(fromConnectionBox, toConnectionBox);
-            fromConnectionBox->addConnection(connection);
-            toConnectionBox->setConnection(connection);
+            new Connection(fromConnectionBox, toConnectionBox);
         }
     }
     catch (const std::exception& e) {