Index: dll/win32/comctl32/rebar.c
===================================================================
--- dll/win32/comctl32/rebar.c	(revision 67084)
+++ dll/win32/comctl32/rebar.c	(working copy)
@@ -1831,6 +1831,13 @@
     HRGN hrgn;
 
     GetClientRect (infoPtr->hwndSelf, &cr);
+  
+    if (theme)
+        {
+            if (IsThemeBackgroundPartiallyTransparent(theme, RP_BACKGROUND, 0))
+                DrawThemeParentBackground (infoPtr->hwndSelf, hdc, &cr);
+            DrawThemeBackground (theme, hdc, 0, 0, &cr, NULL);
+        }
     hrgn = CreateRectRgn(cr.left, cr.top, cr.right, cr.bottom);
 
     oldrow = -1;
@@ -1920,15 +1927,8 @@
 	    new = RGB(0,128,0);
 #endif
 	}
-
-        if (theme)
+        if (!theme)
         {
-            /* When themed, the background color is ignored (but not a
-             * background bitmap */
-            DrawThemeBackground (theme, hdc, 0, 0, &cr, &rcBand);
-        }
-        else
-        {
             old = SetBkColor (hdc, new);
             TRACE("%s background color=0x%06x, band %s\n",
                   (lpBand->clrBack == CLR_NONE) ? "none" :
@@ -1945,6 +1945,7 @@
     }
 
 #if 1
+    if (!theme)
     {
         //FIXME: Apparently painting the remaining area is a v6 feature
         HBRUSH hbrush = CreateSolidBrush(new);
@@ -3378,6 +3379,8 @@
     }
     else if ((theme = GetWindowTheme (infoPtr->hwndSelf)))
     {
+      
+        
         /* adjust rectangle and draw the necessary edge */
         if (!(hdc = GetDCEx( infoPtr->hwndSelf, 0, DCX_USESTYLE | DCX_WINDOW )))
             return 0;
Index: dll/win32/uxtheme/draw.c
===================================================================
--- dll/win32/uxtheme/draw.c	(revision 67084)
+++ dll/win32/uxtheme/draw.c	(working copy)
@@ -2043,6 +2043,8 @@
 
     GetThemeEnumValue(hTheme, iPartId, iStateId, TMT_BGTYPE, &bgtype);
 
+    if (bgtype == BT_NONE) return TRUE;
+    
     if (bgtype != BT_IMAGEFILE) return FALSE;
 
     if(FAILED (UXTHEME_LoadImage (hTheme, 0, iPartId, iStateId, &rect, FALSE, 
Index: dll/win32/uxtheme/msstyles.c
===================================================================
--- dll/win32/uxtheme/msstyles.c	(revision 67084)
+++ dll/win32/uxtheme/msstyles.c	(working copy)
@@ -393,6 +393,7 @@
 static PTHEME_CLASS MSSTYLES_FindClass(PTHEME_FILE tf, LPCWSTR pszAppName, LPCWSTR pszClassName)
 {
     PTHEME_CLASS cur = tf->classes;
+
     while(cur) {
         if(!pszAppName) {
             if(!*cur->szAppName && !lstrcmpiW(pszClassName, cur->szClassName))
@@ -424,7 +425,7 @@
 {
     PTHEME_CLASS cur = MSSTYLES_FindClass(tf, pszAppName, pszClassName);
     if(cur) return cur;
-
+      
     cur = HeapAlloc(GetProcessHeap(), 0, sizeof(THEME_CLASS));
     cur->hTheme = tf->hTheme;
     lstrcpyW(cur->szAppName, pszAppName);
@@ -757,6 +758,7 @@
 PTHEME_CLASS MSSTYLES_OpenThemeClass(PTHEME_FILE tf, LPCWSTR pszAppName, LPCWSTR pszClassList)
 {
     PTHEME_CLASS cls = NULL;
+    PTHEME_CLASS defaultCls = NULL;
     WCHAR szClassName[MAX_THEME_CLASS_NAME];
     LPCWSTR start;
     LPCWSTR end;
@@ -773,10 +775,14 @@
         start = end+1;
         cls = MSSTYLES_FindClass(tf, pszAppName, szClassName);
         if(cls) break;
+        if (!defaultCls)
+            defaultCls = MSSTYLES_FindClass(tf, NULL, szClassName);
     }
     if(!cls && *start) {
         lstrcpynW(szClassName, start, sizeof(szClassName)/sizeof(szClassName[0]));
         cls = MSSTYLES_FindClass(tf, pszAppName, szClassName);
+        if (!defaultCls)
+            defaultCls = MSSTYLES_FindClass(tf, NULL, szClassName);
     }
     if(cls) {
         TRACE("Opened app %s, class %s from list %s\n", debugstr_w(cls->szAppName), debugstr_w(cls->szClassName), debugstr_w(pszClassList));
@@ -784,6 +790,13 @@
 	cls->tf->dwRefCount++;
     TRACE("Theme %p refcount: %d\n", tf, tf->dwRefCount);
     }
+    else if(defaultCls) {
+        cls = defaultCls;
+        TRACE("Opened default class %s from list %s\n", debugstr_w(cls->szClassName), debugstr_w(pszClassList));
+	cls->tf = tf;
+	cls->tf->dwRefCount++;
+    TRACE("Theme %p refcount: %d\n", tf, tf->dwRefCount);
+    }
     return cls;
 }
 
