diff --git a/libnautilus-private/nautilus-icon-container.c b/libnautilus-private/nautilus-icon-container.c
index ae58a49..42f5941 100644
--- a/libnautilus-private/nautilus-icon-container.c
+++ b/libnautilus-private/nautilus-icon-container.c
@@ -8696,11 +8696,21 @@ nautilus_icon_container_get_is_desktop (NautilusIconContainer *container)
 
 void
 nautilus_icon_container_set_is_desktop (NautilusIconContainer *container,
-					   gboolean is_desktop)
+					gboolean is_desktop)
 {
+	GtkWidget *widget;
+	GdkScreen *screen;
+
 	g_return_if_fail (NAUTILUS_IS_ICON_CONTAINER (container));
 
 	container->details->is_desktop = is_desktop;
+	widget = GTK_WIDGET (container);
+	screen = gtk_widget_get_screen (widget);
+
+        if (container->details->is_desktop) {
+                gtk_widget_set_colormap (widget,
+					 gdk_screen_get_system_colormap (screen));
+        }
 }
 
 void
