diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.cpp
index fb2e905eda46fbc037edfa32baa8b633353b006c..3956b9340b7cd168b88257e4ec7ae0129302398e 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.cpp
@@ -30,6 +30,8 @@
 #include "formeditorgraphicsview.h"
 
 #include <QWheelEvent>
+#include <QApplication>
+#include <QtDebug>
 
 namespace QmlDesigner {
 
@@ -73,6 +75,41 @@ void FormEditorGraphicsView::wheelEvent(QWheelEvent *event)
 
 }
 
+void FormEditorGraphicsView::mouseMoveEvent(QMouseEvent *event)
+{
+    if (rect().contains(event->pos())) {
+        QGraphicsView::mouseMoveEvent(event);
+    } else {
+        QPoint position = event->pos();
+        QPoint topLeft = rect().topLeft();
+        QPoint bottomRight = rect().bottomRight();
+        position.rx() = qMax(topLeft.x(), qMin(position.x(), bottomRight.x()));
+        position.ry() = qMax(topLeft.y(), qMin(position.y(), bottomRight.y()));
+        QMouseEvent *mouseEvent = QMouseEvent::createExtendedMouseEvent(event->type(), position, mapToGlobal(position), event->button(), event->buttons(), event->modifiers());
+
+        QGraphicsView::mouseMoveEvent(mouseEvent);
+        delete mouseEvent;
+    }
+}
+
+
+void FormEditorGraphicsView::mouseReleaseEvent(QMouseEvent *event)
+{
+    if (rect().contains(event->pos())) {
+        QGraphicsView::mouseReleaseEvent(event);
+    } else {
+        QPoint position = event->pos();
+        QPoint topLeft = rect().topLeft();
+        QPoint bottomRight = rect().bottomRight();
+        position.rx() = qMax(topLeft.x(), qMin(position.x(), bottomRight.x()));
+        position.ry() = qMax(topLeft.y(), qMin(position.y(), bottomRight.y()));
+        QMouseEvent *mouseEvent = QMouseEvent::createExtendedMouseEvent(event->type(), position, mapToGlobal(position), event->button(), event->buttons(), event->modifiers());
+
+        QGraphicsView::mouseReleaseEvent(mouseEvent);
+        delete mouseEvent;
+    }
+}
+
 void FormEditorGraphicsView::drawBackground(QPainter *painter, const QRectF &rect)
 {
     painter->save();
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.h b/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.h
index 2e79f656a47fccd37e965247df4bf03d4a511190..1caf1ac24bbf249cac1136da6a873b3f09d743a0 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.h
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.h
@@ -44,6 +44,8 @@ public:
 protected:
     void drawBackground(QPainter *painter, const QRectF &rect);
     void wheelEvent(QWheelEvent *event);
+    void mouseMoveEvent(QMouseEvent *event);
+    void mouseReleaseEvent(QMouseEvent *event);
 };
 
 } // namespace QmlDesigner