diff -Nur hildon-desktop-2.0.11-1~svn15367/libhildondesktop/hildon-desktop-panel-window-composite.c hildon-desktop-2.0.11-1~svn15367-new/libhildondesktop/hildon-desktop-panel-window-composite.c
--- hildon-desktop-2.0.11-1~svn15367/libhildondesktop/hildon-desktop-panel-window-composite.c	2008-05-14 11:45:23.000000000 +0800
+++ hildon-desktop-2.0.11-1~svn15367-new/libhildondesktop/hildon-desktop-panel-window-composite.c	2008-05-16 11:30:02.000000000 +0800
@@ -586,6 +586,8 @@
   const gchar                  *filename;
   GdkRectangle                  rect = {0};
 
+  GTK_WIDGET_CLASS (parent_class)->style_set (widget, old_style);
+
   if (!GTK_WIDGET_REALIZED (widget) ||
       !widget->style || !widget->style->rc_style)
     return;
@@ -632,9 +634,6 @@
   rect.height = widget->allocation.height;
   hildon_desktop_panel_window_composite_update_background (window,
                                                            &rect);
-
-  GTK_WIDGET_CLASS (parent_class)->style_set (widget, old_style);
-
 }
 
 #endif
diff -Nur hildon-desktop-2.0.11-1~svn15367/src/main.c hildon-desktop-2.0.11-1~svn15367-new/src/main.c
--- hildon-desktop-2.0.11-1~svn15367/src/main.c	2008-05-14 11:44:19.000000000 +0800
+++ hildon-desktop-2.0.11-1~svn15367-new/src/main.c	2008-05-15 16:07:48.000000000 +0800
@@ -59,8 +59,43 @@
 
 #include "hd-desktop.h"
 
-#define OSSO_USER_DIR        ".osso"
-#define HILDON_DESKTOP_GTKRC "current-gtk-theme.maemo_af_desktop"
+#define DEFAULT_GTK_THEME_PATH "/usr/share/themes"
+#define GTK_THEME_KEY          "/desktop/gnome/interface/gtk_theme"
+#define DEFAULT_GTKRC          "gtk-2.0/gtkrc"
+#define DEFAULT_CACHED_GTKRC   ".gtkrc-2.0"
+
+static void
+theme_changed_callback (GConfClient *client,
+                        guint        connection_id,
+                        GConfEntry  *entry,
+                        gpointer     user_data)
+{
+  gchar *current_theme, *gtkrc = NULL, *cached_gtkrc, *content;
+  gsize length;
+
+  current_theme = gconf_client_get_string (client,
+                                           GTK_THEME_KEY,
+                                           NULL);
+
+  if (!current_theme)
+    current_theme = g_strdup ("Default");
+
+  /* Read the maemo-af-desktop gtkrc file */
+  gtkrc = g_build_filename (DEFAULT_GTK_THEME_PATH,
+                            current_theme,
+                            DEFAULT_GTKRC,
+                            NULL);
+
+  if (gtkrc && g_file_test ((gtkrc), G_FILE_TEST_EXISTS))
+  {
+    cached_gtkrc = g_build_filename (g_get_home_dir (),
+                                     DEFAULT_CACHED_GTKRC,
+                                     NULL);
+
+    if (g_file_get_contents (gtkrc, &content, &length, NULL))
+      g_file_set_contents (cached_gtkrc, content, length, NULL);
+  }
+}
 
 /*
  * hildon-desktop is typically running with higher priority and
@@ -139,10 +174,14 @@
 
 int main (int argc, char **argv)
 {
-  gchar *gtkrc = NULL;
+  gchar *current_theme, *gtkrc = NULL, *cached_gtkrc = NULL, *content;
   HDDesktop *desktop;
+  GConfClient *client = gconf_client_get_default ();
+  gsize length;
+
+  if (!g_thread_supported ())
+    g_thread_init (NULL);
 
-  g_thread_init (NULL);
   setlocale (LC_ALL, "");
 
   bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
@@ -151,26 +190,27 @@
 
   textdomain (GETTEXT_PACKAGE);
 
+  current_theme = gconf_client_get_string (client,
+                                           GTK_THEME_KEY,
+                                           NULL);
+
+  if (!current_theme)
+    current_theme = g_strdup ("Default");
+
   /* Read the maemo-af-desktop gtkrc file */
-  gtkrc = g_build_filename (g_get_home_dir (),
-                            OSSO_USER_DIR,
-                            HILDON_DESKTOP_GTKRC,
+  gtkrc = g_build_filename (DEFAULT_GTK_THEME_PATH,
+                            current_theme,
+                            DEFAULT_GTKRC,
                             NULL);
 
   if (gtkrc && g_file_test ((gtkrc), G_FILE_TEST_EXISTS))
   {
-    gtk_rc_add_default_file (gtkrc);
-  }
-
-  g_free (gtkrc);
+    cached_gtkrc = g_build_filename (g_get_home_dir (),
+                                     DEFAULT_CACHED_GTKRC,
+                                     NULL);
 
-  /* If gtk_init was called already (maemo-launcher is used),
-   * re-parse the gtkrc to include the maemo-af-desktop specific one */
-  if (gdk_screen_get_default ())
-  {
-    gtk_rc_reparse_all_for_settings (
-            gtk_settings_get_for_screen (gdk_screen_get_default ()),
-                                         TRUE);
+    if (g_file_get_contents (gtkrc, &content, &length, NULL))
+      g_file_set_contents (cached_gtkrc, content, length, NULL);
   }
 
   gtk_init (&argc, &argv);
@@ -181,6 +221,9 @@
 
   desktop = hd_desktop_get_singleton ();
 
+  gconf_client_add_dir (client, GTK_THEME_KEY, GCONF_CLIENT_PRELOAD_NONE, NULL);
+  gconf_client_notify_add (client, GTK_THEME_KEY, theme_changed_callback, NULL, NULL, NULL);
+
   hd_desktop_run (desktop);
 
   gtk_main ();
