diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp
index bb257b3278725dfd26a40d9ff00c368997f8fa58..1b429d0dd93dacbf976cd3b7fe4b4912165000af 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp
@@ -196,6 +196,9 @@ void FormEditorScene::synchronizeOtherProperty(const QmlItemNode &qmlItemNode, c
         if (propertyName == "clip")
             item->setFlag(QGraphicsItem::ItemClipsChildrenToShape, qmlItemNode.instanceValue("clip").toBool());
 
+        if (propertyName == "z")
+            item->setZValue(qmlItemNode.instanceValue("z").toDouble());
+
         if (!qmlItemNode.isRootNode()) {
             if (propertyName == "visible")
                 item->setContentVisible(qmlItemNode.instanceValue("visible").toBool());
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
index 3e0ebe06c41cc423b04de38ac75341a34050e20f..e0d0b58297d309e46ba27b64feb3d400d189e435 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
@@ -573,16 +573,22 @@ QmlItemNode findRecursiveQmlItemNode(const QmlObjectNode &firstQmlObjectNode)
     return QmlItemNode();
 }
 
-void FormEditorView::otherPropertyChanged(const QmlObjectNode &qmlObjectNode, const QString &propertyName)
-{
-    Q_ASSERT(qmlObjectNode.isValid());
-
-    QmlItemNode itemNode = findRecursiveQmlItemNode(qmlObjectNode);
-
-    if (itemNode.isValid() && scene()->hasItemForQmlItemNode(itemNode)) {
-        m_scene->synchronizeOtherProperty(itemNode, propertyName);
-        m_currentTool->formEditorItemsChanged(QList<FormEditorItem*>() << m_scene->itemForQmlItemNode(itemNode));
+void FormEditorView::instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList)
+{
+    typedef QPair<ModelNode, QString> NodePropertyPair;
+    foreach (const NodePropertyPair &nodePropertyPair, propertyList) {
+        const QmlItemNode itemNode(nodePropertyPair.first);
+        const QString propertyName = nodePropertyPair.second;
+        if (itemNode.isValid() && scene()->hasItemForQmlItemNode(itemNode)) {
+            static QStringList skipList = QStringList() << "x" << "y" << "width" << "height";
+            if (!skipList.contains(propertyName)) {
+                m_scene->synchronizeOtherProperty(itemNode, propertyName);
+                m_currentTool->formEditorItemsChanged(QList<FormEditorItem*>() << m_scene->itemForQmlItemNode(itemNode));
+            }
+        }
     }
+
+    QmlModelView::instancePropertyChange(propertyList);
 }
 
 void FormEditorView::updateGraphicsIndicators()
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.h b/src/plugins/qmldesigner/components/formeditor/formeditorview.h
index 2657d6ae3b07cf49ad7ae246951ba92dd390a946..44ff565aedc639259207737c9e842c1345d2be01 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorview.h
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.h
@@ -108,6 +108,7 @@ public:
     void instancesRenderImageChanged(const QVector<ModelNode> &nodeList);
     void instancesPreviewImageChanged(const QVector<ModelNode> &nodeList);
     void instancesChildrenChanged(const QVector<ModelNode> &nodeList);
+    void instancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList);
 
     void rewriterBeginTransaction();
     void rewriterEndTransaction();
@@ -123,7 +124,6 @@ signals:
     void ItemCreatorDeActivated();
 
 protected:
-    void otherPropertyChanged(const QmlObjectNode &qmlObjectNode, const QString &propertyName);
     void stateChanged(const QmlModelState &newQmlModelState, const QmlModelState &oldQmlModelState);
     void reset();