diff --git a/src/winextras/qjumplist.cpp b/src/winextras/qjumplist.cpp
index f92f40d374f146d7ee776f8c32360800cc40359f..f211ccaff16ffed6af7808444e7f04e9cc1faa5f 100644
--- a/src/winextras/qjumplist.cpp
+++ b/src/winextras/qjumplist.cpp
@@ -251,8 +251,8 @@ public:
 
     static void warning(const char *function, HRESULT hresult)
     {
-        QByteArray err = QWinExtras::errorStringFromHresult(hresult).toLocal8Bit();
-        qWarning("QJumpList: %s() failed: %#010x, %s.", function, (unsigned)hresult, err.data());
+        const QString err = QWinExtras::errorStringFromHresult(hresult);
+        qWarning("QJumpList: %s() failed: %#010x, %s.", function, (unsigned)hresult, qPrintable(err));
     }
 
     static QString iconsDirPath()
@@ -330,8 +330,8 @@ public:
         IObjectCollection *collection = 0;
         HRESULT hresult = CoCreateInstance(CLSID_EnumerableObjectCollection, 0, CLSCTX_INPROC_SERVER, IID_IObjectCollection, reinterpret_cast<void **>(&collection));
         if (FAILED(hresult)) {
-            QByteArray err = QWinExtras::errorStringFromHresult(hresult).toLocal8Bit();
-            qWarning("QJumpList: failed to instantiate IObjectCollection: %#010x, %s.", (unsigned)hresult, err.data());
+            const QString err = QWinExtras::errorStringFromHresult(hresult);
+            qWarning("QJumpList: failed to instantiate IObjectCollection: %#010x, %s.", (unsigned)hresult, qPrintable(err));
             return 0;
         }
         Q_FOREACH (QJumpListItem *item, list) {
@@ -426,8 +426,8 @@ public:
         IShellLinkW *link = 0;
         HRESULT hresult = CoCreateInstance(CLSID_ShellLink, 0, CLSCTX_INPROC_SERVER, IID_IShellLinkW, reinterpret_cast<void **>(&link));
         if (FAILED(hresult)) {
-            QByteArray err = QWinExtras::errorStringFromHresult(hresult).toLocal8Bit();
-            qWarning("QJumpList: failed to instantiate IShellLinkW: %#010x, %s.", (unsigned)hresult, err.data());
+            const QString err = QWinExtras::errorStringFromHresult(hresult);
+            qWarning("QJumpList: failed to instantiate IShellLinkW: %#010x, %s.", (unsigned)hresult, qPrintable(err));
             return 0;
         }
 
diff --git a/src/winextras/qwintaskbarbutton.cpp b/src/winextras/qwintaskbarbutton.cpp
index e7e1db15c0a27a5a9e5cc320a7abf84ad7554e0d..55cd3ae46184a94e392549dc7d6e18bf2057a4b9 100644
--- a/src/winextras/qwintaskbarbutton.cpp
+++ b/src/winextras/qwintaskbarbutton.cpp
@@ -287,13 +287,13 @@ QWinTaskbarButtonPrivate::QWinTaskbarButtonPrivate(QWinTaskbarButton *parent) :
     HRESULT hresult = CoCreateInstance(CLSID_TaskbarList, 0, CLSCTX_INPROC_SERVER, IID_ITaskbarList4, reinterpret_cast<void **>(&pTbList));
     if (FAILED(hresult)) {
         pTbList = 0;
-        QByteArray err = QWinExtras::errorStringFromHresult(hresult).toLocal8Bit();
-        qWarning("QWinTaskbarButton: IID_ITaskbarList4 was not created: %#010x, %s.", (unsigned)hresult, err.data());
+        const QString err = QWinExtras::errorStringFromHresult(hresult);
+        qWarning("QWinTaskbarButton: IID_ITaskbarList4 was not created: %#010x, %s.", (unsigned)hresult, qPrintable(err));
     } else if (FAILED(pTbList->HrInit())) {
         pTbList->Release();
         pTbList = 0;
-        QByteArray err = QWinExtras::errorStringFromHresult(hresult).toLocal8Bit();
-        qWarning("QWinTaskbarButton: IID_ITaskbarList4 was not initialized: %#010x, %s.", (unsigned)hresult, err.data());
+        const QString err = QWinExtras::errorStringFromHresult(hresult);
+        qWarning("QWinTaskbarButton: IID_ITaskbarList4 was not initialized: %#010x, %s.", (unsigned)hresult, qPrintable(err));
     }
 }
 
@@ -309,7 +309,7 @@ HWND QWinTaskbarButtonPrivate::handle()
 
 int QWinTaskbarButtonPrivate::iconSize() const
 {
-    return GetSystemMetrics(SM_CXICON);
+    return GetSystemMetrics(SM_CXSMICON);
 }
 
 TBPFLAG QWinTaskbarButtonPrivate::nativeProgressState(QWinTaskbarButton::ProgressState state)
@@ -337,11 +337,13 @@ void QWinTaskbarButtonPrivate::updateOverlayIcon()
         descrPtr = new wchar_t[overlayIconDescription.length() + 1];
         descrPtr[overlayIconDescription.toWCharArray(descrPtr)] = 0;
     }
-    if (!overlayIcon.isNull()) {
+    if (!overlayIcon.isNull())
         hicon = QWinExtras::toHICON(overlayIcon.pixmap(iconSize()));
-    }
 
-    pTbList->SetOverlayIcon(handle(), hicon, descrPtr);
+    if (hicon)
+        pTbList->SetOverlayIcon(handle(), hicon, descrPtr);
+    else if (!hicon && !overlayIcon.isNull())
+        pTbList->SetOverlayIcon(handle(), (HICON)LoadImage(0, IDI_APPLICATION, IMAGE_ICON, SM_CXSMICON, SM_CYSMICON, LR_SHARED), descrPtr);
 
     if (hicon)
         DeleteObject(hicon);