diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c
index c80906b556778d5cf33511e3045e0b8126e1662a..d66fe33ed8e4e028000a1fdab37a89400ce4d502 100644
--- a/dlls/comctl32/toolbar.c
+++ b/dlls/comctl32/toolbar.c
@@ -3367,13 +3367,26 @@ TOOLBAR_SetHotItem (HWND hwnd, WPARAM wParam)
 {
     TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(hwnd);
     INT nOldHotItem = infoPtr->nHotItem;
+    TBUTTON_INFO *btnPtr;
 
     if (GetWindowLongA (hwnd, GWL_STYLE) & TBSTYLE_FLAT)
     {
-	infoPtr->nHotItem = (INT)wParam;
-
-	/* FIXME: What else must be done ??? */
 
+    	infoPtr->nHotItem = (INT)wParam;
+        if (wParam >=0)
+        {
+            btnPtr = &infoPtr->buttons[(INT)wParam];
+            btnPtr->bHot = TRUE;
+	        InvalidateRect (hwnd, &btnPtr->rect,
+                    TOOLBAR_HasText(infoPtr, btnPtr));
+        }
+        if (nOldHotItem>=0)
+        {
+            btnPtr = &infoPtr->buttons[nOldHotItem];
+            btnPtr->bHot = FALSE;
+	        InvalidateRect (hwnd, &btnPtr->rect,
+                    TOOLBAR_HasText(infoPtr, btnPtr));
+        }
     }
 
     if (nOldHotItem < 0)