diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.cpp
index 0e02eb717b51a5b2842de8bf9ddec9ee651322b3..36625edafff75c43a4fd091fc40b14c479bdf164 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.cpp
@@ -46,8 +46,8 @@ FormEditorGraphicsView::FormEditorGraphicsView(QWidget *parent) :
 {
     setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
     setResizeAnchor(QGraphicsView::AnchorViewCenter);
-//    setCacheMode(QGraphicsView::CacheNone);
-    setCacheMode(QGraphicsView::CacheBackground);
+    setCacheMode(QGraphicsView::CacheNone);
+//    setCacheMode(QGraphicsView::CacheBackground);
     setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);
     setOptimizationFlags(QGraphicsView::DontSavePainterState);
 //    setViewportUpdateMode(QGraphicsView::NoViewportUpdate);
@@ -110,6 +110,16 @@ void FormEditorGraphicsView::keyPressEvent(QKeyEvent *event)
     QGraphicsView::keyPressEvent(event);
 }
 
+void FormEditorGraphicsView::setRootItemRect(const QRectF &rect)
+{
+    m_rootItemRect = rect;
+    qDebug() << __FUNCTION__ << m_rootItemRect;
+}
+
+QRectF FormEditorGraphicsView::rootItemRect() const
+{
+    return m_rootItemRect;
+}
 
 void FormEditorGraphicsView::mouseReleaseEvent(QMouseEvent *event)
 {
@@ -298,11 +308,10 @@ void FormEditorGraphicsView::drawBackground(QPainter *painter, const QRectF &rec
 {
     painter->save();
     painter->setBrushOrigin(0, 0);
-    painter->fillRect(rect.intersected(sceneRect()), backgroundBrush());
+    painter->fillRect(rect.intersected(rootItemRect()), backgroundBrush());
     // paint rect around editable area
     painter->setPen(Qt::black);
-    QRectF frameRect = sceneRect().adjusted(0, 0, 0, 0);
-    painter->drawRect(frameRect);
+    painter->drawRect( rootItemRect());
     painter->restore();
 }
 
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.h b/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.h
index 4974396fbf7c35b724adec17720dcefefd7d5a18..d04f5621a6a82a2803773e386456553d7e44b29f 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.h
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.h
@@ -46,6 +46,8 @@ public:
     explicit FormEditorGraphicsView(QWidget *parent = 0);
 
     void setFeedbackNode(const QmlItemNode &node);
+    void setRootItemRect(const QRectF &rect);
+    QRectF rootItemRect() const;
 
 protected:
     void drawForeground(QPainter *painter, const QRectF &rect );
@@ -55,6 +57,8 @@ protected:
     void mouseReleaseEvent(QMouseEvent *event);
     void leaveEvent(QEvent *);
     void keyPressEvent(QKeyEvent *event);
+
+
 private:
     QmlItemNode m_feedbackNode;
     QmlObjectNode m_parentNode;
@@ -72,6 +76,7 @@ private:
     bool m_beginHeightHasExpression;
     QPoint m_feedbackOriginPoint;
     QPixmap m_bubblePixmap;
+    QRectF m_rootItemRect;
 };
 
 } // namespace QmlDesigner
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp
index 80d8d35134bd52469e139c232cf113129e0d3863..ed2ed7877450c6c80d06a0d2e51628bf53d00e4b 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp
@@ -65,8 +65,6 @@ FormEditorScene::FormEditorScene(FormEditorWidget *view, FormEditorView *editorV
         m_paintMode(NormalMode),
         m_showBoundingRects(true)
 {
-    setSceneRect(0, 0, 1, 1); // prevent automatic calculation (causing a recursion), right size will be set later
-
     m_manipulatorLayerItem->setZValue(1.0);
     m_formLayerItem->setZValue(0.0);
     m_formLayerItem->setFlag(QGraphicsItem::ItemClipsChildrenToShape, false);
@@ -150,9 +148,6 @@ void FormEditorScene::synchronizeTransformation(const QmlItemNode &qmlItemNode)
     item->updateGeometry();
 
     if (qmlItemNode.isRootNode()) {
-        QRectF sceneRect(qmlItemNode.instanceBoundingRect());
-
-        setSceneRect(sceneRect);
         formLayerItem()->update();
         manipulatorLayerItem()->update();
     }
@@ -198,9 +193,6 @@ FormEditorItem *FormEditorScene::addFormEditorItem(const QmlItemNode &qmlItemNod
 
     m_qmlItemNodeItemHash.insert(qmlItemNode, formEditorItem);
     if (qmlItemNode.isRootNode()) {
-        QRectF sceneRect(qmlItemNode.instanceBoundingRect());
-
-        setSceneRect(sceneRect);
         formLayerItem()->update();
         manipulatorLayerItem()->update();
     }
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
index e5a4368a0086ad76a746d9ec996d9171b5048326..83e828259d663d6c62252500abada37af035342a 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
@@ -486,6 +486,9 @@ void FormEditorView::customNotification(const AbstractView *view, const QString
             QmlItemNode qmlItemNode(node);
             if (qmlItemNode.isValid() && scene()->hasItemForQmlItemNode(qmlItemNode)) {
                 scene()->synchronizeTransformation(qmlItemNode);
+                if (qmlItemNode.isRootModelNode())
+                    widget()->setRootItemRect(qmlItemNode.instanceBoundingRect());
+
                 itemNodeList.append(scene()->itemForQmlItemNode(qmlItemNode));
             }
         }
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
index a54369dc5ac0ea78d51dad8eb94b010f5e98a1e6..12ff53071fab45c602e49e6a0d0474710b384e5a 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
@@ -280,6 +280,16 @@ QString FormEditorWidget::contextHelpId() const
     return helpId;
 }
 
+void FormEditorWidget::setRootItemRect(const QRectF &rect)
+{
+    m_graphicsView->setRootItemRect(rect);
+}
+
+QRectF FormEditorWidget::rootItemRect() const
+{
+    return m_graphicsView->rootItemRect();
+}
+
 }
 
 
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h
index 0e0f99b3f829f7fe58e90ee6ee3cdf059cf45683..7ea15ba423e4cfcc71fee430edff65c106c80b3d 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h
@@ -74,6 +74,9 @@ public:
 
     QString contextHelpId() const;
 
+    void setRootItemRect(const QRectF &rect);
+    QRectF rootItemRect() const;
+
 protected:
     void enterEvent(QEvent *event);
     void wheelEvent(QWheelEvent *event);