if (infoPtr->cdmode & CDRF_NOTIFYPOSTPAINT)
infoPtr->cdmode =
+Index: listview.c
+===================================================================
+--- listview.c (revision 51320)
++++ listview.c (working copy)
+@@ -315,6 +315,7 @@
+ COLORREF clrBk;
+ COLORREF clrText;
+ COLORREF clrTextBk;
++ BOOL bDefaultBkColor;
+
+ /* font */
+ HFONT hDefaultFont;
+@@ -1635,8 +1636,19 @@
+ /* used to handle collapse main item column case */
+ static inline BOOL LISTVIEW_DrawFocusRect(const LISTVIEW_INFO *infoPtr, HDC hdc)
+ {
+- return (infoPtr->rcFocus.left < infoPtr->rcFocus.right) ?
+- DrawFocusRect(hdc, &infoPtr->rcFocus) : FALSE;
++ BOOL Ret = FALSE;
++
++ if (infoPtr->rcFocus.left < infoPtr->rcFocus.right)
++ {
++ DWORD dwOldBkColor, dwOldTextColor;
++
++ dwOldBkColor = SetBkColor(hdc, RGB(255, 255, 255));
++ dwOldTextColor = SetBkColor(hdc, RGB(0, 0, 0));
++ Ret = DrawFocusRect(hdc, &infoPtr->rcFocus);
++ SetBkColor(hdc, dwOldBkColor);
++ SetBkColor(hdc, dwOldTextColor);
++ }
++ return Ret;
+ }
+
+ /* Listview invalidation functions: use _only_ these functions to invalidate */
+@@ -5042,7 +5054,11 @@
+
+ /* Draw marquee rectangle if appropriate */
+ if (infoPtr->bMarqueeSelect)
++ {
++ SetBkColor(hdc, RGB(255, 255, 255));
++ SetTextColor(hdc, RGB(0, 0, 0));
+ DrawFocusRect(hdc, &infoPtr->marqueeDrawRect);
++ }
+
+ if (cdmode & CDRF_NOTIFYPOSTPAINT)
+ notify_postpaint(infoPtr, &nmlvcd);
+@@ -7856,6 +7872,7 @@
+ {
+ TRACE("(clrBk=%x)\n", clrBk);
+
++ infoPtr->bDefaultBkColor = FALSE;
+ if(infoPtr->clrBk != clrBk) {
+ if (infoPtr->clrBk != CLR_NONE) DeleteObject(infoPtr->hBkBrush);
+ infoPtr->clrBk = clrBk;
+@@ -9248,6 +9265,7 @@
+ infoPtr->clrText = CLR_DEFAULT;
+ infoPtr->clrTextBk = CLR_DEFAULT;
+ LISTVIEW_SetBkColor(infoPtr, comctl32_color.clrWindow);
++ infoPtr->bDefaultBkColor = TRUE;
+
+ /* set default values */
+ infoPtr->nFocusedItem = -1;
+@@ -11510,6 +11528,11 @@
+
+ case WM_SYSCOLORCHANGE:
+ COMCTL32_RefreshSysColors();
++ if (infoPtr->bDefaultBkColor)
++ {
++ LISTVIEW_SetBkColor(infoPtr, comctl32_color.clrWindow);
++ infoPtr->bDefaultBkColor = TRUE;
++ }
+ return 0;
+
+ /* case WM_TIMER: */
+Index: rebar.c
+===================================================================
+--- rebar.c (revision 51320)
++++ rebar.c (working copy)
+@@ -51,7 +51,6 @@
+ * - WM_QUERYNEWPALETTE
+ * - WM_RBUTTONDOWN
+ * - WM_RBUTTONUP
+- * - WM_SYSCOLORCHANGE
+ * - WM_VKEYTOITEM
+ * - WM_WININICHANGE
+ * Notifications:
+@@ -2540,10 +2539,8 @@
+
+ /* initialize band */
+ memset(lpBand, 0, sizeof(*lpBand));
+- lpBand->clrFore = infoPtr->clrText == CLR_NONE ? infoPtr->clrBtnText :
+- infoPtr->clrText;
+- lpBand->clrBack = infoPtr->clrBk == CLR_NONE ? infoPtr->clrBtnFace :
+- infoPtr->clrBk;
++ lpBand->clrFore = infoPtr->clrText;
++ lpBand->clrBack = infoPtr->clrBk;
+ lpBand->iImage = -1;
+
+ REBAR_CommonSetupBand(infoPtr->hwndSelf, lprbbi, lpBand);
+@@ -3793,6 +3790,8 @@
+
+ case WM_SYSCOLORCHANGE:
+ COMCTL32_RefreshSysColors();
++ infoPtr->clrBtnText = comctl32_color.clrBtnText;
++ infoPtr->clrBtnFace = comctl32_color.clrBtnFace;
+ return 0;
+
+ /* case WM_VKEYTOITEM: supported according to ControlSpy */