diff --git a/shared/help/helpviewer.cpp b/shared/help/helpviewer.cpp
index 9b86d8e1cf3bd7944a7af992ca43a62d98945a31..ab95e62b8cd4781baa494989bdb0ee01a24b4399 100644
--- a/shared/help/helpviewer.cpp
+++ b/shared/help/helpviewer.cpp
@@ -60,12 +60,13 @@ QT_BEGIN_NAMESPACE
 class HelpNetworkReply : public QNetworkReply
 {
 public:
-    HelpNetworkReply(const QNetworkRequest &request, const QByteArray &fileData);
+    HelpNetworkReply(const QNetworkRequest &request, const QByteArray &fileData,
+        const QString &mimeType);
 
     virtual void abort();
 
     virtual qint64 bytesAvailable() const
-    { return data.length() + QNetworkReply::bytesAvailable(); }
+        { return data.length() + QNetworkReply::bytesAvailable(); }
 
 protected:
     virtual qint64 readData(char *data, qint64 maxlen);
@@ -76,13 +77,13 @@ private:
 };
 
 HelpNetworkReply::HelpNetworkReply(const QNetworkRequest &request,
-        const QByteArray &fileData)
+        const QByteArray &fileData, const QString &mimeType)
     : data(fileData), origLen(fileData.length())
 {
     setRequest(request);
     setOpenMode(QIODevice::ReadOnly);
 
-    setHeader(QNetworkRequest::ContentTypeHeader, QLatin1String("text/html"));
+    setHeader(QNetworkRequest::ContentTypeHeader, mimeType);
     setHeader(QNetworkRequest::ContentLengthHeader, QByteArray::number(origLen));
     QTimer::singleShot(0, this, SIGNAL(metaDataChanged()));
     QTimer::singleShot(0, this, SIGNAL(readyRead()));
@@ -127,9 +128,23 @@ HelpNetworkAccessManager::HelpNetworkAccessManager(QHelpEngine *engine,
 QNetworkReply *HelpNetworkAccessManager::createRequest(Operation op,
     const QNetworkRequest &request, QIODevice *outgoingData)
 {
-    const QString scheme = request.url().scheme();
+    const QString& scheme = request.url().scheme();
     if (scheme == QLatin1String("qthelp") || scheme == QLatin1String("about")) {
-        return new HelpNetworkReply(request, helpEngine->fileData(request.url()));
+        const QUrl& url = request.url();
+        QString mimeType = url.toString();
+        if (mimeType.endsWith(QLatin1String(".svg"))
+            || mimeType.endsWith(QLatin1String(".svgz"))) {
+           mimeType = QLatin1String("image/svg+xml");
+        }
+        else if (mimeType.endsWith(QLatin1String(".css"))) {
+           mimeType = QLatin1String("text/css");
+        }
+        else if (mimeType.endsWith(QLatin1String(".js"))) {
+           mimeType = QLatin1String("text/javascript");
+        } else {
+            mimeType = QLatin1String("text/html");
+        }
+        return new HelpNetworkReply(request, helpEngine->fileData(url), mimeType);
     }
     return QNetworkAccessManager::createRequest(op, request, outgoingData);
 }
@@ -312,7 +327,7 @@ void HelpViewer::setSource(const QUrl &url)
     if (url.isValid() && !help) {
         if (launchedWithExternalApp(url))
             return;
-        
+
         QUrl u = helpEngine->findFile(url);
         if (u.isValid()) {
             if (!homeUrl.isValid())