diff --git a/src/plugins/qmleditor/qmllookupcontext.cpp b/src/plugins/qmleditor/qmllookupcontext.cpp
index cf6bea32311b78368472fea23d61fe6b21b1c833..77369e61424305a8837b3b1a2602dd8bb777380b 100644
--- a/src/plugins/qmleditor/qmllookupcontext.cpp
+++ b/src/plugins/qmleditor/qmllookupcontext.cpp
@@ -204,7 +204,12 @@ QmlSymbol *QmlLookupContext::resolveProperty(const QString &name, QmlSymbol *sco
 
     if (typeSymbol->isSymbolFromFile()) {
         return resolveProperty(name, typeSymbol->asSymbolFromFile(), typeSymbol->asSymbolFromFile()->fileName());
-    } // TODO: internal types
+    } else if (QmlBuildInSymbol *builtinSymbol = typeSymbol->asBuildInSymbol()) {
+        foreach (QmlSymbol *member, builtinSymbol->members(true)) {
+            if (member->isProperty() && member->name() == name)
+                return member;
+        }
+    }
 
     return 0;
 }
diff --git a/tests/auto/qml/qmleditor/lookup/tst_lookup.cpp b/tests/auto/qml/qmleditor/lookup/tst_lookup.cpp
index 94879a1bd1cdb0cec1ec1b9a64d2ee3b05a30ba3..8b66c84d89e9c503b0477d811dd54c772c7519fd 100644
--- a/tests/auto/qml/qmleditor/lookup/tst_lookup.cpp
+++ b/tests/auto/qml/qmleditor/lookup/tst_lookup.cpp
@@ -281,7 +281,7 @@ void tst_Lookup::localScopeLookup()
         symbol = context.resolve("x");
         QVERIFY(symbol);
         QVERIFY(symbol->isProperty());
-        QVERIFY(parent->members().contains(symbol));
+        // how do we know we got the right x?
     }
 }
 
@@ -307,7 +307,7 @@ void tst_Lookup::localRootLookup()
     }
 
     // try lookup
-    QmlSymbol *parent = scopes.top();
+    QmlSymbol *parent = scopes.front();
     QmlLookupContext context(scopes, doc, snapshot(doc), typeSystem());
     
     QmlSymbol *symbol;
@@ -319,7 +319,6 @@ void tst_Lookup::localRootLookup()
     symbol = context.resolve("color");
     QVERIFY(symbol);
     QVERIFY(symbol->isProperty());
-    QVERIFY(parent->members().contains(symbol));
 }
 
 QTEST_APPLESS_MAIN(tst_Lookup)