diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
index 44ff28714217307ecd87f34f899d5ccdd2a893d4..de050e8f315d933bd86cb465eaf8957e448982c7 100644
--- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
@@ -61,6 +61,35 @@ bool QmlItemNode::isItemOrWindow(const ModelNode &modelNode)
     return false;
 }
 
+static QmlItemNode createQmlItemNodeFromSource(AbstractView *view, const QString &source, const QPointF &position)
+{
+    QScopedPointer<Model> inputModel(Model::create("QtQuick.Item", 1, 0, view->model()));
+    inputModel->setFileUrl(view->model()->fileUrl());
+    QPlainTextEdit textEdit;
+
+    textEdit.setPlainText(source);
+    NotIndentingTextEditModifier modifier(&textEdit);
+
+    QScopedPointer<RewriterView> rewriterView(new RewriterView(RewriterView::Amend, 0));
+    rewriterView->setCheckSemanticErrors(false);
+    rewriterView->setTextModifier(&modifier);
+    inputModel->setRewriterView(rewriterView.data());
+
+    if (rewriterView->errors().isEmpty() && rewriterView->rootModelNode().isValid()) {
+        ModelNode rootModelNode = rewriterView->rootModelNode();
+        inputModel->detachView(rewriterView.data());
+
+        rootModelNode.variantProperty("x").setValue(qRound(position.x()));
+        rootModelNode.variantProperty("y").setValue(qRound(position.y()));
+
+        ModelMerger merger(view);
+        return merger.insertModel(rootModelNode);
+    }
+
+    return QmlItemNode();
+}
+
+
 QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibraryEntry &itemLibraryEntry, const QPointF &position, QmlItemNode parentQmlItemNode)
 {
     if (!parentQmlItemNode.isValid())
@@ -106,39 +135,17 @@ QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibrary
             }
         }
 
-        QList<QPair<PropertyName, QVariant> > propertyPairList;
-        propertyPairList.append(qMakePair(PropertyName("x"), QVariant(qRound(position.x()))));
-        propertyPairList.append(qMakePair(PropertyName("y"), QVariant(qRound(position.y()))));
-
         if (itemLibraryEntry.qml().isEmpty()) {
+            QList<QPair<PropertyName, QVariant> > propertyPairList;
+            propertyPairList.append(qMakePair(PropertyName("x"), QVariant(qRound(position.x()))));
+            propertyPairList.append(qMakePair(PropertyName("y"), QVariant(qRound(position.y()))));
+
             foreach (const PropertyContainer &property, itemLibraryEntry.properties())
                 propertyPairList.append(qMakePair(property.name(), property.value()));
 
             newQmlItemNode = QmlItemNode(view->createModelNode(itemLibraryEntry.typeName(), majorVersion, minorVersion, propertyPairList));
         } else {
-            QScopedPointer<Model> inputModel(Model::create("QtQuick.Rectangle", 1, 0, view->model()));
-            inputModel->setFileUrl(view->model()->fileUrl());
-            QPlainTextEdit textEdit;
-
-
-            textEdit.setPlainText(itemLibraryEntry.qmlSource());
-            NotIndentingTextEditModifier modifier(&textEdit);
-
-            QScopedPointer<RewriterView> rewriterView(new RewriterView(RewriterView::Amend, 0));
-            rewriterView->setCheckSemanticErrors(false);
-            rewriterView->setTextModifier(&modifier);
-            inputModel->setRewriterView(rewriterView.data());
-
-            if (rewriterView->errors().isEmpty() && rewriterView->rootModelNode().isValid()) {
-                ModelNode rootModelNode = rewriterView->rootModelNode();
-                inputModel->detachView(rewriterView.data());
-
-                rootModelNode.variantProperty("x").setValue(propertyPairList.first().second);
-                rootModelNode.variantProperty("y").setValue(propertyPairList.at(1).second);
-
-                ModelMerger merger(view);
-                newQmlItemNode = merger.insertModel(rootModelNode);
-            }
+            newQmlItemNode = createQmlItemNodeFromSource(view, itemLibraryEntry.qml(), position);
         }
 
         if (parentQmlItemNode.hasDefaultProperty())