diff --git a/src/plugins/qmldesigner/core/instances/objectnodeinstance.cpp b/src/plugins/qmldesigner/core/instances/objectnodeinstance.cpp
index 8d9c12e29113bb0fd33babe166b6b17a75511e71..db259b6ec4fa86439bd4a5bec3dd67ae5b529c12 100644
--- a/src/plugins/qmldesigner/core/instances/objectnodeinstance.cpp
+++ b/src/plugins/qmldesigner/core/instances/objectnodeinstance.cpp
@@ -358,6 +358,9 @@ void ObjectNodeInstance::removeFromOldProperty(QObject *object, QObject *oldPare
 {
     QDeclarativeProperty metaProperty(oldParent, oldParentProperty, context());
 
+    if (!metaProperty.isValid())
+        return;
+
     if (isList(metaProperty)) {
         removeObjectFromList(metaProperty, object, nodeInstanceView()->engine());
     } else if (isObject(metaProperty)) {
@@ -415,6 +418,9 @@ void ObjectNodeInstance::setPropertyVariant(const QString &name, const QVariant
 {
     QDeclarativeProperty property(object(), name, context());
 
+    if (!property.isValid())
+        return;
+
     QVariant oldValue = property.read();
     if (oldValue.type() == QVariant::Url) {
         QUrl url = oldValue.toUrl();
@@ -439,11 +445,13 @@ void ObjectNodeInstance::setPropertyVariant(const QString &name, const QVariant
 
 void ObjectNodeInstance::setPropertyBinding(const QString &name, const QString &expression)
 {
-    QDeclarativeContext *QDeclarativeContext = QDeclarativeEngine::contextForObject(object());
-
     QDeclarativeProperty metaProperty(object(), name, context());
-    if (metaProperty.isValid() && metaProperty.isProperty()) {
-        QDeclarativeBinding *binding = new QDeclarativeBinding(expression, object(), QDeclarativeContext);
+
+    if (!metaProperty.isValid())
+        return;
+
+    if (metaProperty.isProperty()) {
+        QDeclarativeBinding *binding = new QDeclarativeBinding(expression, object(), context());
         binding->setTarget(metaProperty);
         binding->setNotifyOnValueChanged(true);
         QDeclarativeAbstractBinding *oldBinding = QDeclarativePropertyPrivate::setBinding(metaProperty, binding);
@@ -499,6 +507,9 @@ void ObjectNodeInstance::refreshProperty(const QString &name)
 {
     QDeclarativeProperty property(object(), name, context());
 
+    if (!property.isValid())
+        return;
+
     QVariant oldValue(property.read());
 
     if (property.isResettable())
@@ -521,6 +532,9 @@ void ObjectNodeInstance::resetProperty(QObject *object, const QString &propertyN
 
     QDeclarativeProperty property(object, propertyName, context());
 
+    if (!property.isValid())
+        return;
+
     QVariant oldValue = property.read();
     if (oldValue.type() == QVariant::Url) {
         QUrl url = oldValue.toUrl();
diff --git a/src/plugins/qmldesigner/core/instances/qmlgraphicsitemnodeinstance.cpp b/src/plugins/qmldesigner/core/instances/qmlgraphicsitemnodeinstance.cpp
index eb9ad087de2ef7be68a150bb794fc00037be420e..84c9464ef761a6a952fea7e81ab00c4780b876e4 100644
--- a/src/plugins/qmldesigner/core/instances/qmlgraphicsitemnodeinstance.cpp
+++ b/src/plugins/qmldesigner/core/instances/qmlgraphicsitemnodeinstance.cpp
@@ -509,6 +509,9 @@ QPair<QString, NodeInstance> QmlGraphicsItemNodeInstance::anchor(const QString &
         targetObject = qmlGraphicsItem()->anchors()->centerIn();
     } else {
         QDeclarativeProperty metaProperty(object(), name, context());
+        if (!metaProperty.isValid())
+            return GraphicsObjectNodeInstance::anchor(name);
+
         QDeclarativeAnchorLine anchorLine = metaProperty.read().value<QDeclarativeAnchorLine>();
         if (anchorLine.anchorLine != QDeclarativeAnchorLine::Invalid) {
             targetObject = anchorLine.item;