diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
index bd0e94a3d251a94b24f124df4dba1df8954777e5..9dcf8686d6b147feb63c79c0613d7f78f2673644 100644
--- a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
+++ b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
@@ -627,13 +627,18 @@ void DesignDocumentController::paste()
         model->detachView(&view);
         m_d->model->attachView(&view);
 
-        ModelNode selectedNode;
+        ModelNode targetNode;
 
         if (!view.selectedModelNodes().isEmpty())
-            selectedNode = view.selectedModelNodes().first();
+            targetNode = view.selectedModelNodes().first();
+
+        if (!targetNode.isValid())
+            targetNode = view.rootModelNode();
+
+
+        if (targetNode.parentProperty().isValid())
+            targetNode = targetNode.parentProperty().parentModelNode();
 
-        if (!selectedNode.isValid())
-            selectedNode = view.rootModelNode();
         foreach (const ModelNode &node, selectedNodes) {
             foreach (const ModelNode &node2, selectedNodes) {
                 if (node.isAncestorOf(node2))
@@ -641,25 +646,36 @@ void DesignDocumentController::paste()
             }
 
         }
+
+        QList<ModelNode> pastedNodeList;
+
         foreach (const ModelNode &node, selectedNodes) {
-            QString defaultProperty(selectedNode.metaInfo().defaultProperty());
+            QString defaultProperty(targetNode.metaInfo().defaultProperty());
             ModelNode pastedNode(view.insertModel(node));
-            selectedNode.nodeListProperty(defaultProperty).reparentHere(pastedNode);
+            pastedNodeList.append(pastedNode);
+            targetNode.nodeListProperty(defaultProperty).reparentHere(pastedNode);
         }
+
+        view.setSelectedModelNodes(pastedNodeList);
     } else {
         model->detachView(&view);
         m_d->model->attachView(&view);
         ModelNode pastedNode(view.insertModel(rootNode));
-        ModelNode selectedNode;
+        ModelNode targetNode;
 
         if (!view.selectedModelNodes().isEmpty())
-            selectedNode = view.selectedModelNodes().first();
+            targetNode = view.selectedModelNodes().first();
+
+        if (!targetNode.isValid())
+            targetNode = view.rootModelNode();
+
+        if (targetNode.parentProperty().isValid())
+            targetNode = targetNode.parentProperty().parentModelNode();
+
+        QString defaultProperty(targetNode.metaInfo().defaultProperty());
+        targetNode.nodeListProperty(defaultProperty).reparentHere(pastedNode);
 
-        if (!selectedNode.isValid())
-            selectedNode = view.rootModelNode();
 
-        QString defaultProperty(selectedNode.metaInfo().defaultProperty());
-        selectedNode.nodeListProperty(defaultProperty).reparentHere(pastedNode);
     }
 }