diff --git a/src/plugins/qmldesigner/designercore/model/model.cpp b/src/plugins/qmldesigner/designercore/model/model.cpp
index 72e8585f7d4bcaf845bdd0d3ccc0a1ccf5e7f0f4..e80286fc60681f56c4ab95c0abcc774a565b52d3 100644
--- a/src/plugins/qmldesigner/designercore/model/model.cpp
+++ b/src/plugins/qmldesigner/designercore/model/model.cpp
@@ -1898,12 +1898,12 @@ const MetaInfo Model::metaInfo() const
 
 bool Model::hasNodeMetaInfo(const QString &typeName, int majorVersion, int minorVersion)
 {
-    return NodeMetaInfo(this, typeName, majorVersion, minorVersion).isValid();
+    return NodeMetaInfo(metaInfoProxyModel(), typeName, majorVersion, minorVersion).isValid();
 }
 
 NodeMetaInfo Model::metaInfo(const QString &typeName, int majorVersion, int minorVersion)
 {
-    return NodeMetaInfo(this, typeName, majorVersion, minorVersion);
+    return NodeMetaInfo(metaInfoProxyModel(), typeName, majorVersion, minorVersion);
 }
 
 /*!
diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
index d3dd08a2b0bda5f3a39710967101fe7ad44eb383..e3cafdab66e4d5a44666c5d9cb71fe1462ae3368 100644
--- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
+++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
@@ -284,9 +284,9 @@ static bool isPropertyChangesType(const QString &type)
     return  type == QLatin1String("PropertyChanges") || type == QLatin1String("QtQuick.PropertyChanges") || type == QLatin1String("Qt.PropertyChanges");
 }
 
-static bool propertyIsComponentType(const QmlDesigner::NodeAbstractProperty &property, const QString &type)
+static bool propertyIsComponentType(const QmlDesigner::NodeAbstractProperty &property, const QString &type, QmlDesigner::Model *model)
 {
-    if (property.parentModelNode().model()->metaInfo(type, -1, -1).isSubclassOf(QLatin1String("QtQuick.Component"), -1, -1) && !isComponentType(type)) {
+    if (model->metaInfo(type, -1, -1).isSubclassOf(QLatin1String("QtQuick.Component"), -1, -1) && !isComponentType(type)) {
         return false; //If the type is already a subclass of Component keep it
     }
 
@@ -770,9 +770,10 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH
         if (view()->checkSemanticErrors()) {
             Check check(doc, m_lookupContext->context());
             check.setOptions(check.options() & ~Check::ErrCheckTypeErrors);
-            foreach (const QmlJS::DiagnosticMessage &diagnosticMessage, check())
+            foreach (const QmlJS::DiagnosticMessage &diagnosticMessage, check()) {
                 if (diagnosticMessage.isError())
                     errors.append(RewriterView::Error(diagnosticMessage, QUrl::fromLocalFile(doc->fileName())));
+            }
 
             if (!errors.isEmpty()) {
                 m_rewriterView->setErrors(errors);
@@ -838,7 +839,7 @@ void TextToModelMerger::syncNode(ModelNode &modelNode,
         return;
     }
 
-    bool isImplicitComponent = modelNode.parentProperty().isValid() && propertyIsComponentType(modelNode.parentProperty(), typeName);
+    bool isImplicitComponent = modelNode.parentProperty().isValid() && propertyIsComponentType(modelNode.parentProperty(), typeName, modelNode.model());
 
 
     if (modelNode.type() != typeName //If there is no valid parentProperty                                                                                                      //the node has just been created. The type is correct then.
@@ -1457,7 +1458,7 @@ void ModelAmender::shouldBeNodeProperty(AbstractProperty &modelProperty,
     ModelNode theNode = modelProperty.parentModelNode();
     NodeProperty newNodeProperty = theNode.nodeProperty(modelProperty.name());
 
-    const bool propertyTakesComponent = propertyIsComponentType(newNodeProperty, typeName);
+    const bool propertyTakesComponent = propertyIsComponentType(newNodeProperty, typeName, theNode.model());
 
     const ModelNode &newNode = m_merger->createModelNode(typeName,
                                                           majorVersion,
@@ -1506,7 +1507,7 @@ ModelNode ModelAmender::listPropertyMissingModelNode(NodeListProperty &modelProp
         return ModelNode();
     }
 
-    const bool propertyTakesComponent = propertyIsComponentType(modelProperty, typeName);
+    const bool propertyTakesComponent = propertyIsComponentType(modelProperty, typeName, m_merger->view()->model());
 
 
     const ModelNode &newNode = m_merger->createModelNode(typeName,
@@ -1542,7 +1543,7 @@ void ModelAmender::typeDiffers(bool isRootNode,
                                QmlJS::AST::UiObjectMember *astNode,
                                ReadingContext *context)
 {
-    const bool propertyTakesComponent = propertyIsComponentType(modelNode.parentProperty(), typeName);
+    const bool propertyTakesComponent = propertyIsComponentType(modelNode.parentProperty(), typeName, modelNode.model());
 
     if (isRootNode) {
         modelNode.view()->changeRootNodeType(typeName, majorVersion, minorVersion);