diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp
index 90c3b83ee3c46bc40a2681766ef96d6a1f59820a..d09f87920aae479c251a0e19a721c42bd4ac8e53 100644
--- a/src/plugins/help/helpplugin.cpp
+++ b/src/plugins/help/helpplugin.cpp
@@ -574,9 +574,13 @@ void HelpPlugin::extensionsInitialized()
     bool needsSetup = false;
     bool assistantInternalDocRegistered = false;
     QStringList documentationToRemove;
+    QStringList filtersToRemove;
 
     const QString &docInternal = QString("com.nokia.qtcreator.%1%2%3")
         .arg(IDE_VERSION_MAJOR).arg(IDE_VERSION_MINOR).arg(IDE_VERSION_RELEASE);
+    const QString filterInternal = QString("Qt Creator %1.%2.%3")
+        .arg(IDE_VERSION_MAJOR).arg(IDE_VERSION_MINOR).arg(IDE_VERSION_RELEASE);
+    const QRegExp filterRegExp("Qt Creator \\d*\\.\\d*\\.\\d*");
     const QStringList &docs = m_helpEngine->registeredDocumentations();
     foreach (const QString &ns, docs) {
         if (ns == docInternal) {
@@ -585,36 +589,38 @@ void HelpPlugin::extensionsInitialized()
             documentationToRemove << ns;
         }
     }
+    foreach (const QString &filter, m_helpEngine->customFilters()) {
+        if (filterRegExp.exactMatch(filter) && filter != filterInternal) {
+            filtersToRemove << filter;
+        }
+    }
 
     //remove any qtcreator documentation that doesn't belong to current version
-    if (!documentationToRemove.isEmpty()) {
+    if (!documentationToRemove.isEmpty() || !filtersToRemove.isEmpty() || !assistantInternalDocRegistered) {
         QHelpEngineCore hc(m_helpEngine->collectionFile());
         hc.setupData();
         foreach (const QString &ns, documentationToRemove) {
             if (hc.unregisterDocumentation(ns))
                 needsSetup = true;
         }
-    }
-
-    if (!assistantInternalDocRegistered) {
-        QFileInfo fi(m_helpEngine->collectionFile());
+        foreach (const QString &filter, filtersToRemove) {
+            if (hc.removeCustomFilter(filter))
+                needsSetup = true;
+        }
 
-        const QString qchFileName =
-            QDir::cleanPath(QCoreApplication::applicationDirPath()
+        if (!assistantInternalDocRegistered) {
+            const QString qchFileName =
+                QDir::cleanPath(QCoreApplication::applicationDirPath()
 #if defined(Q_OS_MAC)
-            + QLatin1String("/../Resources/doc/qtcreator.qch"));
+                + QLatin1String("/../Resources/doc/qtcreator.qch"));
 #else
-            + QLatin1String("../../share/doc/qtcreator/qtcreator.qch"));
+                + QLatin1String("../../share/doc/qtcreator/qtcreator.qch"));
 #endif
-        QHelpEngineCore hc(fi.absoluteFilePath());
-        hc.setupData();
-        QString fileNamespace = QHelpEngineCore::namespaceName(qchFileName);
-        if (!fileNamespace.isEmpty()
-            && !hc.registeredDocumentations().contains(fileNamespace)) {
-                if (!hc.registerDocumentation(qchFileName))
-                    qDebug() << hc.error();
-                needsSetup = true;
+            if (!hc.registerDocumentation(qchFileName))
+                qDebug() << hc.error();
+            needsSetup = true;
         }
+
     }
 
     QLatin1String key("UnfilteredFilterInserted");