diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index e8323c2c6249bed51a7b0dd2e6e2856ba4f9563b..aa655204ffc4c42b032a97d160ae6c1b4e10568e 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -121,11 +121,6 @@ QtVersionManager::QtVersionManager()
 
     writeVersionsIntoSettings();
 
-    if (Welcome::WelcomeMode *welcomeMode = qobject_cast<Welcome::WelcomeMode*>
-        (Core::ICore::instance()->modeManager()->mode(Core::Constants::MODE_WELCOME))) {
-        connect(this, SIGNAL(updatedExamples(QString, QString)),
-                welcomeMode, SIGNAL(updatedExamples(QString, QString)));
-    }
     updateDocumentation();
     updateExamples();
 }
@@ -190,7 +185,9 @@ void QtVersionManager::updateExamples()
         if (version->hasDemos())
             demosPath = version->demosPath();
         if (!examplesPath.isEmpty() && !demosPath.isEmpty()) {
-            emit updatedExamples(examplesPath, demosPath);
+            if (Welcome::WelcomeMode *welcomeMode = qobject_cast<Welcome::WelcomeMode*>
+                    (Core::ICore::instance()->modeManager()->mode(Core::Constants::MODE_WELCOME)))
+                welcomeMode->updateExamples(examplesPath, demosPath, version->sourcePath());
             return;
         }
     }
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h
index c1fe58f9f0d02d3c2b517c342a78f4f8a7e1218a..0f2144c250076f03063c1ac872e53d058c76e682 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.h
+++ b/src/plugins/qt4projectmanager/qtversionmanager.h
@@ -201,7 +201,6 @@ public:
 signals:
     void defaultQtVersionChanged();
     void qtVersionsChanged();
-    void updatedExamples(const QString& examplesPath, const QString& demosPath);
 private:
     static QString findQMakeLine(const QString &directory);
     static QString trimLine(const QString line);
diff --git a/src/plugins/welcome/welcomemode.cpp b/src/plugins/welcome/welcomemode.cpp
index f712399dcc8c0007452178e3ed75e9f8c602786e..0035fefe7bbe98230697da6fe2082c398ecfdebe 100644
--- a/src/plugins/welcome/welcomemode.cpp
+++ b/src/plugins/welcome/welcomemode.cpp
@@ -169,9 +169,6 @@ WelcomeMode::WelcomeMode() :
     connect(m_d->ui.openExampleButton, SIGNAL(clicked()), SLOT(slotOpenExample()));
     connect(m_d->ui.examplesComboBox, SIGNAL(currentIndexChanged(int)), SLOT(slotEnableExampleButton(int)));
 
-    connect(this, SIGNAL(updatedExamples(QString, QString)),
-            this, SLOT(slotUpdateExamples(QString, QString)));
-
     connect(m_d->rssFetcher, SIGNAL(newsItemReady(QString, QString, QString)),
         m_d->ui.newsTreeWidget, SLOT(slotAddNewsItem(QString, QString, QString)));
 
@@ -315,11 +312,14 @@ void WelcomeMode::slotUrlClicked(const QString &data)
     QDesktopServices::openUrl(QUrl(data));
 }
 
-void WelcomeMode::slotUpdateExamples(const QString& examplePath, const QString& demosPath)
+void WelcomeMode::updateExamples(const QString& examplePath, const QString& demosPath, const QString &sourcePath)
 {
     QString demoxml = demosPath + "/qtdemo/xml/examples.xml";
-    if (!QFile::exists(demoxml))
-        return;
+    if (!QFile::exists(demoxml)) {
+        demoxml = sourcePath + "/demos/qtdemo/xml/examples.xml";
+        if (!QFile::exists(demoxml))
+            return;
+    }
 
     QFile description(demoxml);
     if (!description.open(QFile::ReadOnly))
@@ -353,7 +353,10 @@ void WelcomeMode::slotUpdateExamples(const QString& examplePath, const QString&
             if (inExamples && reader.name() == "example") {
                 QString name = reader.attributes().value(QLatin1String("name")).toString();
                 QString fn = reader.attributes().value(QLatin1String("filename")).toString();
-                QString fileName = examplePath + '/' + dirName + '/' + fn + '/' + fn + ".pro";
+                QString relativeProPath = '/' + dirName + '/' + fn + '/' + fn + ".pro";
+                QString fileName = examplePath + relativeProPath;
+                if (!QFile::exists(fileName))
+                    fileName = sourcePath + "/examples" + relativeProPath;
                 QString helpPath = "qthelp://com.trolltech.qt/qdoc/" + dirName.replace("/", "-") + "-" + fn + ".html";
 
                 m_d->ui.examplesComboBox->addItem("  " + name, fileName);
diff --git a/src/plugins/welcome/welcomemode.h b/src/plugins/welcome/welcomemode.h
index 3825b9dbef30e5548fa8f5003d5ffbe5b6190685..0555ce60f30ce1fa2fb640f8236045fc607eb684 100644
--- a/src/plugins/welcome/welcomemode.h
+++ b/src/plugins/welcome/welcomemode.h
@@ -76,20 +76,20 @@ public:
     void activated();
     QString contextHelpId() const { return QLatin1String("Qt Creator"); }
 
+    void updateExamples(const QString& examplePath, const QString& demosPath, const QString &sourcePath);
+
 signals:
     void requestProject(const QString &project);
     void requestSession(const QString &session);
     void openHelpPage(const QString& url);
     void openContextHelpPage(const QString& url);
     void manageSessions();
-    void updatedExamples(const QString& examplePath, const QString& demosPath);
 
 private slots:
     void slotFeedback();
     void slotSessionClicked(const QString &data);
     void slotProjectClicked(const QString &data);
     void slotUrlClicked(const QString &data);
-    void slotUpdateExamples(const QString& examplePath, const QString& demosPath);
     void slotEnableExampleButton(int);
     void slotOpenExample();
     void slotCreateNewProject();