diff --git a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp
index a4671301283fc9b78840fcceebd28cef86509981..aa01e830caa768ce382f1b948e86f238f2e74f36 100644
--- a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp
@@ -42,6 +42,7 @@
 
 #include <private/qdeclarativeanchors_p.h>
 #include <private/qdeclarativeanchors_p_p.h>
+#include <private/qdeclarativeitem_p.h>
 #include <private/qdeclarativeproperty_p.h>
 #include <private/qdeclarativerectangle_p.h>
 
@@ -292,33 +293,33 @@ void QmlGraphicsItemNodeInstance::resetProperty(const QString &name)
 
     GraphicsObjectNodeInstance::resetProperty(name);
     if (name == "anchors.fill") {
-        qmlGraphicsItem()->anchors()->resetFill();
+        anchors()->resetFill();
         resetHorizontal();
         resetVertical();
     } else if (name == "anchors.centerIn") {
-        qmlGraphicsItem()->anchors()->resetCenterIn();
+        anchors()->resetCenterIn();
         resetHorizontal();
         resetVertical();
     } else if (name == "anchors.top") {
-        qmlGraphicsItem()->anchors()->resetTop();
+        anchors()->resetTop();
         resetVertical();
     } else if (name == "anchors.left") {
-        qmlGraphicsItem()->anchors()->resetLeft();
+        anchors()->resetLeft();
         resetHorizontal();
     } else if (name == "anchors.right") {
-        qmlGraphicsItem()->anchors()->resetRight();
+        anchors()->resetRight();
         resetHorizontal();
     } else if (name == "anchors.bottom") {
-        qmlGraphicsItem()->anchors()->resetBottom();
+        anchors()->resetBottom();
         resetVertical();
     } else if (name == "anchors.horizontalCenter") {
-        qmlGraphicsItem()->anchors()->resetHorizontalCenter();
+        anchors()->resetHorizontalCenter();
         resetHorizontal();
     } else if (name == "anchors.verticalCenter") {
-        qmlGraphicsItem()->anchors()->resetVerticalCenter();
+        anchors()->resetVerticalCenter();
         resetVertical();
     } else if (name == "anchors.baseline") {
-        qmlGraphicsItem()->anchors()->resetBaseline();
+        anchors()->resetBaseline();
         resetVertical();
     }
 }
@@ -333,11 +334,11 @@ void QmlGraphicsItemNodeInstance::resetProperty(const QString &name)
 //
 //        if (instance.isQmlGraphicsItem()) {
 //            Pointer qmlGraphicsItemInstance(instance.QmlGraphicsItemNodeInstance());
-//            qmlGraphicsItem()->anchors()->setProperty("top", anchorLineFor(qmlGraphicsItemInstance->qmlGraphicsItem(), anchorLine));
+//            anchors()->setProperty("top", anchorLineFor(qmlGraphicsItemInstance->qmlGraphicsItem(), anchorLine));
 //        }
 //    } else {
-//        if (qmlGraphicsItem()->anchors()->usedAnchors().testFlag(QDeclarativeAnchors::HasTopAnchor)) {
-//            qmlGraphicsItem()->anchors()->resetTop();
+//        if (anchors()->usedAnchors().testFlag(QDeclarativeAnchors::HasTopAnchor)) {
+//            anchors()->resetTop();
 //            setPropertyValue("y", modelNode().property("y").value());
 //            setPropertyValue("height", modelNode().property("height").value());
 //        }
@@ -350,11 +351,11 @@ void QmlGraphicsItemNodeInstance::resetProperty(const QString &name)
 //
 //        if (instance.isQmlGraphicsItem()) {
 //            Pointer qmlGraphicsItemInstance(instance.QmlGraphicsItemNodeInstance());
-//            qmlGraphicsItem()->anchors()->setProperty("left", anchorLineFor(qmlGraphicsItemInstance->qmlGraphicsItem(), anchorLine));
+//            anchors()->setProperty("left", anchorLineFor(qmlGraphicsItemInstance->qmlGraphicsItem(), anchorLine));
 //        }
 //    } else {
-//        if (qmlGraphicsItem()->anchors()->usedAnchors().testFlag(QDeclarativeAnchors::HasLeftAnchor)) {
-//            qmlGraphicsItem()->anchors()->resetLeft();
+//        if (anchors()->usedAnchors().testFlag(QDeclarativeAnchors::HasLeftAnchor)) {
+//            anchors()->resetLeft();
 //            setPropertyValue("x", modelNode().property("x").value());
 //            setPropertyValue("width", modelNode().property("width").value());
 //        }
@@ -367,11 +368,11 @@ void QmlGraphicsItemNodeInstance::resetProperty(const QString &name)
 //
 //        if (instance.isQmlGraphicsItem()) {
 //            Pointer qmlGraphicsItemInstance(instance.QmlGraphicsItemNodeInstance());
-//            qmlGraphicsItem()->anchors()->setProperty("right", anchorLineFor(qmlGraphicsItemInstance->qmlGraphicsItem(), anchorLine));
+//            anchors()->setProperty("right", anchorLineFor(qmlGraphicsItemInstance->qmlGraphicsItem(), anchorLine));
 //        }
 //    } else {
-//        if (qmlGraphicsItem()->anchors()->usedAnchors().testFlag(QDeclarativeAnchors::HasRightAnchor)) {
-//            qmlGraphicsItem()->anchors()->resetRight();
+//        if (anchors()->usedAnchors().testFlag(QDeclarativeAnchors::HasRightAnchor)) {
+//            anchors()->resetRight();
 //            setPropertyValue("x", modelNode().property("x").value());
 //            setPropertyValue("width", modelNode().property("width").value());
 //        }
@@ -384,11 +385,11 @@ void QmlGraphicsItemNodeInstance::resetProperty(const QString &name)
 //
 //        if (instance.isQmlGraphicsItem()) {
 //            Pointer qmlGraphicsItemInstance(instance.QmlGraphicsItemNodeInstance());
-//            qmlGraphicsItem()->anchors()->setProperty("bottom", anchorLineFor(qmlGraphicsItemInstance->qmlGraphicsItem(), anchorLine));
+//            anchors()->setProperty("bottom", anchorLineFor(qmlGraphicsItemInstance->qmlGraphicsItem(), anchorLine));
 //        }
 //    } else {
-//        if (qmlGraphicsItem()->anchors()->usedAnchors().testFlag(QDeclarativeAnchors::HasBottomAnchor)) {
-//            qmlGraphicsItem()->anchors()->resetBottom();
+//        if (anchors()->usedAnchors().testFlag(QDeclarativeAnchors::HasBottomAnchor)) {
+//            anchors()->resetBottom();
 //            setPropertyValue("y", modelNode().property("y").value());
 //            setPropertyValue("height", modelNode().property("height").value());
 //        }
@@ -401,11 +402,11 @@ void QmlGraphicsItemNodeInstance::resetProperty(const QString &name)
 //
 //        if (instance.isQmlGraphicsItem()) {
 //            Pointer qmlGraphicsItemInstance(instance.QmlGraphicsItemNodeInstance());
-//            qmlGraphicsItem()->anchors()->setProperty("horizontalCenter", anchorLineFor(qmlGraphicsItemInstance->qmlGraphicsItem(), anchorLine));
+//            anchors()->setProperty("horizontalCenter", anchorLineFor(qmlGraphicsItemInstance->qmlGraphicsItem(), anchorLine));
 //        }
 //    } else {
-//        if (qmlGraphicsItem()->anchors()->usedAnchors().testFlag(QDeclarativeAnchors::HasHCenterAnchor)) {
-//            qmlGraphicsItem()->anchors()->resetHorizontalCenter();
+//        if (anchors()->usedAnchors().testFlag(QDeclarativeAnchors::HasHCenterAnchor)) {
+//            anchors()->resetHorizontalCenter();
 //            setPropertyValue("x", modelNode().property("x").value());
 //            setPropertyValue("width", modelNode().property("width").value());
 //        }
@@ -418,23 +419,23 @@ void QmlGraphicsItemNodeInstance::resetProperty(const QString &name)
 //
 //        if (instance.isQmlGraphicsItem()) {
 //            Pointer qmlGraphicsItemInstance(instance.QmlGraphicsItemNodeInstance());
-//            qmlGraphicsItem()->anchors()->setProperty("verticalCenter",anchorLineFor(qmlGraphicsItemInstance->qmlGraphicsItem(), anchorLine));
+//            anchors()->setProperty("verticalCenter",anchorLineFor(qmlGraphicsItemInstance->qmlGraphicsItem(), anchorLine));
 //        }
 //    } else {
-//        if (qmlGraphicsItem()->anchors()->usedAnchors().testFlag(QDeclarativeAnchors::HasVCenterAnchor)) {
-//            qmlGraphicsItem()->anchors()->resetVerticalCenter();
+//        if (anchors()->usedAnchors().testFlag(QDeclarativeAnchors::HasVCenterAnchor)) {
+//            anchors()->resetVerticalCenter();
 //            setPropertyValue("y", modelNode().property("y").value());
 //            setPropertyValue("height", modelNode().property("height").value());
 //        }
 //    }
 //
 //
-//    qmlGraphicsItem()->anchors()->setTopMargin(anchors.margin(AnchorLine::Top));
-//    qmlGraphicsItem()->anchors()->setLeftMargin(anchors.margin(AnchorLine::Left));
-//    qmlGraphicsItem()->anchors()->setBottomMargin(anchors.margin(AnchorLine::Bottom));
-//    qmlGraphicsItem()->anchors()->setRightMargin(anchors.margin(AnchorLine::Right));
-//    qmlGraphicsItem()->anchors()->setHorizontalCenterOffset(anchors.margin(AnchorLine::HorizontalCenter));
-//    qmlGraphicsItem()->anchors()->setVerticalCenterOffset(anchors.margin(AnchorLine::VerticalCenter));
+//    anchors()->setTopMargin(anchors.margin(AnchorLine::Top));
+//    anchors()->setLeftMargin(anchors.margin(AnchorLine::Left));
+//    anchors()->setBottomMargin(anchors.margin(AnchorLine::Bottom));
+//    anchors()->setRightMargin(anchors.margin(AnchorLine::Right));
+//    anchors()->setHorizontalCenterOffset(anchors.margin(AnchorLine::HorizontalCenter));
+//    anchors()->setVerticalCenterOffset(anchors.margin(AnchorLine::VerticalCenter));
 //}
 
 QDeclarativeAnchors::Anchor anchorLineFlagForName(const QString &name)
@@ -504,9 +505,9 @@ QPair<QString, NodeInstance> QmlGraphicsItemNodeInstance::anchor(const QString &
     QString targetName;
 
     if (name == "anchors.fill") {
-        targetObject = qmlGraphicsItem()->anchors()->fill();
+        targetObject = anchors()->fill();
     } else if (name == "anchors.centerIn") {
-        targetObject = qmlGraphicsItem()->anchors()->centerIn();
+        targetObject = anchors()->centerIn();
     } else {
         QDeclarativeProperty metaProperty(object(), name, context());
         if (!metaProperty.isValid())
@@ -533,46 +534,49 @@ bool QmlGraphicsItemNodeInstance::hasAnchor(const QString &name) const
         return false;
 
     if (name == "anchors.fill")
-        return qmlGraphicsItem()->anchors()->fill() != 0;
+        return anchors()->fill() != 0;
 
     if (name == "anchors.centerIn")
-        return qmlGraphicsItem()->anchors()->centerIn() != 0;
+        return anchors()->centerIn() != 0;
 
     if (name == "anchors.right")
-        return qmlGraphicsItem()->anchors()->right().item != 0;
+        return anchors()->right().item != 0;
 
     if (name == "anchors.top")
-        return qmlGraphicsItem()->anchors()->top().item != 0;
+        return anchors()->top().item != 0;
 
     if (name == "anchors.left")
-        return qmlGraphicsItem()->anchors()->left().item != 0;
+        return anchors()->left().item != 0;
 
     if (name == "anchors.bottom")
-        return qmlGraphicsItem()->anchors()->bottom().item != 0;
+        return anchors()->bottom().item != 0;
 
     if (name == "anchors.horizontalCenter")
-        return qmlGraphicsItem()->anchors()->horizontalCenter().item != 0;
+        return anchors()->horizontalCenter().item != 0;
 
     if (name == "anchors.verticalCenter")
-        return qmlGraphicsItem()->anchors()->verticalCenter().item != 0;
+        return anchors()->verticalCenter().item != 0;
 
     if (name == "anchors.baseline")
-        return qmlGraphicsItem()->anchors()->baseline().item != 0;
+        return anchors()->baseline().item != 0;
 
-    return qmlGraphicsItem()->anchors()->usedAnchors().testFlag(anchorLineFlagForName(name));
+    return anchors()->usedAnchors().testFlag(anchorLineFlagForName(name));
 }
 
 bool isAnchoredTo(QDeclarativeItem *fromItem, QDeclarativeItem *toItem)
 {
-    return fromItem->anchors()->fill() == toItem
-            || fromItem->anchors()->centerIn() == toItem
-            || fromItem->anchors()->bottom().item == toItem
-            || fromItem->anchors()->top().item == toItem
-            || fromItem->anchors()->left().item == toItem
-            || fromItem->anchors()->right().item == toItem
-            || fromItem->anchors()->verticalCenter().item == toItem
-            || fromItem->anchors()->horizontalCenter().item == toItem
-            || fromItem->anchors()->baseline().item == toItem;
+    Q_ASSERT(dynamic_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(fromItem)));
+    QDeclarativeItemPrivate *fromItemPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(fromItem));
+    QDeclarativeAnchors *anchors = fromItemPrivate->anchors();
+    return anchors->fill() == toItem
+            || anchors->centerIn() == toItem
+            || anchors->bottom().item == toItem
+            || anchors->top().item == toItem
+            || anchors->left().item == toItem
+            || anchors->right().item == toItem
+            || anchors->verticalCenter().item == toItem
+            || anchors->horizontalCenter().item == toItem
+            || anchors->baseline().item == toItem;
 }
 
 bool areChildrenAnchoredTo(QDeclarativeItem *fromItem, QDeclarativeItem *toItem)
@@ -612,8 +616,6 @@ bool QmlGraphicsItemNodeInstance::isAnchoredBy() const
     return false;
 }
 
-
-
 QDeclarativeItem *QmlGraphicsItemNodeInstance::qmlGraphicsItem() const
 {
     if (object() == 0)
@@ -622,5 +624,13 @@ QDeclarativeItem *QmlGraphicsItemNodeInstance::qmlGraphicsItem() const
     Q_ASSERT(qobject_cast<QDeclarativeItem*>(object()));
     return static_cast<QDeclarativeItem*>(object());
 }
+
+QDeclarativeAnchors *QmlGraphicsItemNodeInstance::anchors() const
+{
+    Q_ASSERT(dynamic_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(qmlGraphicsItem())));
+    QDeclarativeItemPrivate *itemPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(qmlGraphicsItem()));
+    return itemPrivate->anchors();
 }
-}
+
+} // namespace Internal
+} // namespace QmlDesigner
diff --git a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.h b/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.h
index be3bd5dd1bba29fc2477d92e78d51aae83c70f9b..67aa6813516d2c4cb45200ab3186ad78a42f752f 100644
--- a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.h
+++ b/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.h
@@ -68,6 +68,7 @@ public:
 protected:
     QmlGraphicsItemNodeInstance(QDeclarativeItem *item, bool hasContent);
     QDeclarativeItem *qmlGraphicsItem() const;
+    QDeclarativeAnchors *anchors() const;
     void resetHorizontal();
     void resetVertical();