diff --git a/agui2/src/Graphics/Connection/Connection.cpp b/agui2/src/Graphics/Connection/Connection.cpp
index 786e0d162b0296f306b2750fc9e6b1cba944efd8..426357230d3f67b362b88b2232c0a341d90231fe 100644
--- a/agui2/src/Graphics/Connection/Connection.cpp
+++ b/agui2/src/Graphics/Connection/Connection.cpp
@@ -12,13 +12,13 @@
 #define SHORTEST_LINE 20.0
 
 Connection::Connection(OutputConnectionBox* origin, InputConnectionBox* target)
-    : originConnectionBox(origin)
+    : QGraphicsItem(origin)
+    , originConnectionBox(origin)
     , targetConnectionBox(target)
 {
     this->setZValue(2);
-    this->boundRect = Utils::pointsToRect(origin->pos(), target->pos());
+    this->boundRect = Utils::pointsToRect({}, target->pos() - origin->pos());
     this->boundRect.adjust(-1, -1, 1, 1);
-    origin->scene()->addItem(this);
     origin->scene()->update();
 
     auto* originModel = origin->getParent()->getModelBox();
@@ -35,8 +35,8 @@ QRectF Connection::boundingRect() const {
 void Connection::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) {
     painter->setPen(QPen(Qt::black,1));
 
-    QPointF originPoint = this->originConnectionBox->scenePos();
-    QPointF targetPoint = this->targetConnectionBox->scenePos();
+    QPointF originPoint;
+    QPointF targetPoint = this->targetConnectionBox->scenePos() - this->originConnectionBox->scenePos();
 
     if ((targetPoint.x() - originPoint.x()) > SHORTEST_LINE * 2)
         this->drawDirectConnection(painter, originPoint, targetPoint);