diff --git a/configure.in b/configure.in
index c108710..985bbe4 100644
--- a/configure.in
+++ b/configure.in
@@ -3,7 +3,7 @@ AC_PREREQ(2.54)
 dnl ===========================================================================
 
 m4_define(glib_minver,                 2.25.12)
-m4_define(gnome_desktop_minver,        2.29.91)
+m4_define(gnome_desktop_minver,        2.90.5)
 m4_define(pango_minver,                1.1.2)
 m4_define(gtk_minver,                  2.90.5)
 m4_define(xml_minver,                  2.4.7)
diff --git a/eel/eel-background.c b/eel/eel-background.c
index 5e1efa1..d31cc78 100644
--- a/eel/eel-background.c
+++ b/eel/eel-background.c
@@ -244,64 +244,21 @@ eel_background_finalize (GObject *object)
 	EEL_CALL_PARENT (G_OBJECT_CLASS, finalize, (object));
 }
 
-static EelBackgroundImagePlacement
-placement_gnome_to_eel (GnomeBGPlacement p)
-{
-	switch (p) {
-	case GNOME_BG_PLACEMENT_CENTERED:
-		return EEL_BACKGROUND_CENTERED;
-	case GNOME_BG_PLACEMENT_FILL_SCREEN:
-		return EEL_BACKGROUND_SCALED;
-	case GNOME_BG_PLACEMENT_SCALED:
-		return EEL_BACKGROUND_SCALED_ASPECT;
-	case GNOME_BG_PLACEMENT_ZOOMED:
-		return EEL_BACKGROUND_ZOOM;
-	case GNOME_BG_PLACEMENT_TILED:
-		return EEL_BACKGROUND_TILED;
-        case GNOME_BG_PLACEMENT_SPANNED:
-                return EEL_BACKGROUND_SPANNED;
-	}
-
-	return EEL_BACKGROUND_TILED;
-}
-
-static GnomeBGPlacement
-placement_eel_to_gnome (EelBackgroundImagePlacement p)
-{
-	switch (p) {
-	case EEL_BACKGROUND_CENTERED:
-		return GNOME_BG_PLACEMENT_CENTERED;
-	case EEL_BACKGROUND_SCALED:
-		return GNOME_BG_PLACEMENT_FILL_SCREEN;
-	case EEL_BACKGROUND_SCALED_ASPECT:
-		return GNOME_BG_PLACEMENT_SCALED;
-	case EEL_BACKGROUND_ZOOM:
-		return GNOME_BG_PLACEMENT_ZOOMED;
-	case EEL_BACKGROUND_TILED:
-		return GNOME_BG_PLACEMENT_TILED;
-	case EEL_BACKGROUND_SPANNED:
-		return GNOME_BG_PLACEMENT_SPANNED;
-	}
-
-	return GNOME_BG_PLACEMENT_TILED;
-}
-
-EelBackgroundImagePlacement
+GDesktopBackgroundStyle
 eel_background_get_image_placement (EelBackground *background)
 {
-	g_return_val_if_fail (EEL_IS_BACKGROUND (background), EEL_BACKGROUND_TILED);
+	g_return_val_if_fail (EEL_IS_BACKGROUND (background), G_DESKTOP_BACKGROUND_STYLE_WALLPAPER);
 
-	return placement_gnome_to_eel (gnome_bg_get_placement (background->details->bg));
+	return gnome_bg_get_placement (background->details->bg);
 }
 
 void
-eel_background_set_image_placement (EelBackground              *background,
-				    EelBackgroundImagePlacement new_placement)
+eel_background_set_image_placement (EelBackground           *background,
+				    GDesktopBackgroundStyle  new_placement)
 {
 	g_return_if_fail (EEL_IS_BACKGROUND (background));
 
-	gnome_bg_set_placement (background->details->bg,
-				placement_eel_to_gnome (new_placement));
+	gnome_bg_set_placement (background->details->bg, new_placement);
 }
 
 EelBackground *
@@ -506,12 +463,12 @@ set_image_properties (EelBackground *background)
 	if (!background->details->color) {
 		c = background->details->default_color;
 		make_color_inactive (background, &c);
-		gnome_bg_set_color (background->details->bg, GNOME_BG_COLOR_SOLID,
+		gnome_bg_set_color (background->details->bg, G_DESKTOP_BACKGROUND_SHADING_SOLID,
 				    &c, NULL);
 	} else if (!eel_gradient_is_gradient (background->details->color)) {
 		eel_gdk_color_parse_with_white_default (background->details->color, &c);
 		make_color_inactive (background, &c);
-		gnome_bg_set_color (background->details->bg, GNOME_BG_COLOR_SOLID, &c, NULL);
+		gnome_bg_set_color (background->details->bg, G_DESKTOP_BACKGROUND_SHADING_SOLID, &c, NULL);
 	} else {
 		GdkColor c1;
 		GdkColor c2;
@@ -528,11 +485,13 @@ set_image_properties (EelBackground *background)
 		g_free (spec);
 
 		if (eel_gradient_is_horizontal (background->details->color))
-			gnome_bg_set_color (background->details->bg, GNOME_BG_COLOR_H_GRADIENT, &c1, &c2);
+			gnome_bg_set_color (background->details->bg, G_DESKTOP_BACKGROUND_SHADING_HORIZONTAL, &c1, &c2);
 		else
-			gnome_bg_set_color (background->details->bg, GNOME_BG_COLOR_V_GRADIENT, &c1, &c2);
+			gnome_bg_set_color (background->details->bg, G_DESKTOP_BACKGROUND_SHADING_VERTICAL, &c1, &c2);
 
 	}
+	
+	gnome_bg_set_draw_background (background->details->bg, TRUE);
 }
 
 char *
@@ -639,7 +598,7 @@ eel_background_receive_dropped_background_image (EelBackground *background,
 	 * We rely on eel_background_set_image_uri_and_color to emit
 	 * the SETTINGS_CHANGED & APPEARANCE_CHANGE signals.
 	 */
-	eel_background_set_image_placement (background, EEL_BACKGROUND_TILED);
+	eel_background_set_image_placement (background, G_DESKTOP_BACKGROUND_STYLE_WALLPAPER);
 	
 	eel_background_set_image_uri_and_color (background, action, image_uri, NULL);
 }
@@ -1113,12 +1072,48 @@ eel_background_receive_dropped_color (EelBackground *background,
 }
 
 void
-eel_background_save_to_gconf (EelBackground *background)
+eel_background_read_desktop_settings (EelBackground            *background,
+				      char                    **color,
+				      char                    **image,
+				      GDesktopBackgroundStyle  *placement)
 {
-	GConfClient *client = gconf_client_get_default ();
+	char *end_color;
+	char *start_color;
+	GDesktopBackgroundShading shading;
+	GdkColor primary;
+	GdkColor secondary;
+	const char *filename;
+	
+	g_return_if_fail (EEL_IS_BACKGROUND (background));
+	g_return_if_fail (background->details->bg != NULL);
+
+	gnome_bg_load_from_preferences (background->details->bg);
+	gnome_bg_get_color (background->details->bg, &shading, &primary, &secondary);
+
+	filename = gnome_bg_get_filename (background->details->bg);
+	if (gnome_bg_get_draw_background (background->details->bg) && filename != NULL)
+		*image = g_filename_to_uri (filename, NULL, NULL);
+	else
+		*image = NULL;
+
+	*placement = gnome_bg_get_placement (background->details->bg);
+
+	start_color = eel_gdk_rgb_to_color_spec (eel_gdk_color_to_rgb (&primary));
+	end_color   = eel_gdk_rgb_to_color_spec (eel_gdk_color_to_rgb (&secondary));
 
+	if (shading == G_DESKTOP_BACKGROUND_SHADING_VERTICAL ||
+	    shading == G_DESKTOP_BACKGROUND_SHADING_HORIZONTAL) {
+	*color = eel_gradient_new (start_color, end_color, shading == G_DESKTOP_BACKGROUND_SHADING_HORIZONTAL);
+	} else {
+		*color = g_strdup (start_color);
+	}
+}
+
+void
+eel_background_save_to_preferences (EelBackground *background)
+{
 	if (background->details->bg)
-		gnome_bg_save_to_preferences (background->details->bg, client);
+		gnome_bg_save_to_preferences (background->details->bg);
 }
 
 void
diff --git a/eel/eel-background.h b/eel/eel-background.h
index 7b8d66d..db04c40 100644
--- a/eel/eel-background.h
+++ b/eel/eel-background.h
@@ -45,6 +45,8 @@
 
 #include <gdk-pixbuf/gdk-pixbuf.h>
 
+#include <gdesktop-enums.h>
+
 typedef struct EelBackground EelBackground;
 typedef struct EelBackgroundClass EelBackgroundClass;
 
@@ -60,15 +62,6 @@ typedef struct EelBackgroundClass EelBackgroundClass;
 #define EEL_BACKGROUND_GET_CLASS(obj) \
   (G_TYPE_INSTANCE_GET_CLASS ((obj), EEL_TYPE_BACKGROUND, EelBackgroundClass))
 
-typedef enum {
-	EEL_BACKGROUND_TILED = 0, /* zero makes this the default placement */
-	EEL_BACKGROUND_CENTERED,
-	EEL_BACKGROUND_SCALED,
-	EEL_BACKGROUND_SCALED_ASPECT,
-	EEL_BACKGROUND_ZOOM,
-	EEL_BACKGROUND_SPANNED
-} EelBackgroundImagePlacement;
-
 GType                       eel_background_get_type                         (void);
 EelBackground *             eel_background_new                              (void);
 
@@ -83,7 +76,7 @@ void                        eel_background_set_image_uri                    (Eel
 
 void                        eel_background_reset                            (EelBackground               *background);
 void                        eel_background_set_image_placement              (EelBackground               *background,
-									     EelBackgroundImagePlacement  placement);
+									     GDesktopBackgroundStyle      placement);
 
 /* Should be TRUE for desktop background */
 void			    eel_background_set_desktop 			    (EelBackground              *background,
@@ -94,7 +87,7 @@ gboolean		    eel_background_is_desktop 			    (EelBackground              *back
 /* Calls to interrogate the current state of a background. */
 char *                      eel_background_get_color                        (EelBackground               *background);
 char *                      eel_background_get_image_uri                    (EelBackground               *background);
-EelBackgroundImagePlacement eel_background_get_image_placement              (EelBackground               *background);
+GDesktopBackgroundStyle     eel_background_get_image_placement              (EelBackground               *background);
 gboolean                    eel_background_is_dark                          (EelBackground               *background);
 gboolean                    eel_background_is_set                           (EelBackground               *background);
 
@@ -117,7 +110,11 @@ void                        eel_background_receive_dropped_background_image (Eel
 
 /* Gets or creates a background so that it's attached to a widget. */
 EelBackground *             eel_get_widget_background                       (GtkWidget                   *widget);
-void			    eel_background_save_to_gconf                    (EelBackground               *background);
+void			    eel_background_save_to_preferences              (EelBackground               *background);
+void			    eel_background_read_desktop_settings            (EelBackground               *background,
+									     char                       **color,
+									     char                       **image,
+									     GDesktopBackgroundStyle     *placement);
 
 /* Set activity status of background. Inactive backgrounds are drawn in the theme's INSENSITIVE color. */
 void                        eel_background_set_active                       (EelBackground               *background,
diff --git a/libnautilus-private/nautilus-directory-background.c b/libnautilus-private/nautilus-directory-background.c
index fe2f114..7ab917a 100644
--- a/libnautilus-private/nautilus-directory-background.c
+++ b/libnautilus-private/nautilus-directory-background.c
@@ -36,6 +36,7 @@
 #include "nautilus-file-attributes.h"
 #include <gtk/gtk.h>
 #include <string.h>
+#include <gdesktop-enums.h>
 
 static void background_changed_callback     (EelBackground *background, 
                                              GdkDragAction  action,
@@ -46,7 +47,7 @@ static void background_reset_callback       (EelBackground *background,
 static void saved_settings_changed_callback (NautilusFile       *file, 
                                              EelBackground *background);
                                          
-static void nautilus_file_background_receive_gconf_changes (EelBackground *background);
+static void nautilus_file_background_receive_gsettings_changes (EelBackground *background);
 
 static void nautilus_file_background_theme_changed (GSettings   *settings,
                                                     const gchar *key,
@@ -72,13 +73,13 @@ nautilus_connect_desktop_background_to_file_metadata (NautilusIconContainer *ico
 	 */
 	nautilus_connect_background_to_file_metadata (GTK_WIDGET (icon_container), file, NAUTILUS_DND_ACTION_SET_AS_FOLDER_BACKGROUND);
 
-	nautilus_file_background_receive_gconf_changes (background);
+	nautilus_file_background_receive_gsettings_changes (background);
 }
 
 static void
 nautilus_file_background_get_default_settings (char **color,
                                                char **image,
-                                               EelBackgroundImagePlacement *placement)
+                                               GDesktopBackgroundStyle *placement)
 {
         gboolean background_set;
 
@@ -89,258 +90,89 @@ nautilus_file_background_get_default_settings (char **color,
         }
 
         if (background_set && image) {
-                *image =  g_settings_get_string (nautilus_preferences, NAUTILUS_PREFERENCES_BACKGROUND_URI);
+                *image = g_settings_get_string (nautilus_preferences, NAUTILUS_PREFERENCES_BACKGROUND_URI);
         }
 
         if (placement) {
-                *placement = EEL_BACKGROUND_TILED;
+                *placement = G_DESKTOP_BACKGROUND_STYLE_WALLPAPER;
         }
 }
 
 
-#define BG_PREFERENCES_DRAW_BACKGROUND    "/desktop/gnome/background/draw_background"
-#define BG_PREFERENCES_PRIMARY_COLOR      "/desktop/gnome/background/primary_color"
-#define BG_PREFERENCES_SECONDARY_COLOR    "/desktop/gnome/background/secondary_color"
-#define BG_PREFERENCES_COLOR_SHADING_TYPE "/desktop/gnome/background/color_shading_type"
-#define BG_PREFERENCES_PICTURE_OPTIONS    "/desktop/gnome/background/picture_options"
-#define BG_PREFERENCES_PICTURE_OPACITY    "/desktop/gnome/background/picture_opacity"
-#define BG_PREFERENCES_PICTURE_FILENAME   "/desktop/gnome/background/picture_filename"
-
-static void
-read_color (GConfClient *client, const char *key, GdkColor *color)
-{
-        gchar *tmp;
-        
-        tmp = gconf_client_get_string (client, key, NULL);
-
-        if (tmp != NULL) {
-                if (!gdk_color_parse (tmp, color))
-                        gdk_color_parse ("black", color);
-		g_free (tmp);
-        }
-        else {
-                gdk_color_parse ("black", color);
-        }
-}
-
-static void
-nautilus_file_background_read_desktop_settings (char **color,
-                                                char **image,
-                                                EelBackgroundImagePlacement *placement)
-{
-        GConfClient *client;
-        gboolean enabled;
-        GdkColor primary, secondary;
-        gchar *tmp, *filename;
-	char	*end_color;
-	char	*start_color;
-	gboolean use_gradient;
-	gboolean is_horizontal;
-
-	filename = NULL;
-
-        client = gconf_client_get_default ();
-
-        /* Get the image filename */
-        enabled = gconf_client_get_bool (client, BG_PREFERENCES_DRAW_BACKGROUND, NULL);
-        if (enabled) {
-                tmp = gconf_client_get_string (client, BG_PREFERENCES_PICTURE_FILENAME, NULL);
-                if (tmp != NULL) {
-                        if (g_utf8_validate (tmp, -1, NULL) && g_file_test (tmp, G_FILE_TEST_EXISTS)) {
-                                filename = g_strdup (tmp);
-                        }
-                        else {
-                                filename = g_filename_from_utf8 (tmp, -1, NULL, NULL, NULL);
-                        }
-                }
-                g_free (tmp);
-
-                if (filename != NULL && filename[0] != '\0') {
-                        *image = g_filename_to_uri (filename, NULL, NULL);
-                }
-                else {
-                        *image = NULL;
-                }
-                g_free (filename);
-        }
-        else {
-                *image = NULL;
-        }
-        
-        /* Get the placement */
-        tmp = gconf_client_get_string (client, BG_PREFERENCES_PICTURE_OPTIONS, NULL);
-        if (tmp != NULL) {
-                if (strcmp (tmp, "wallpaper") == 0) {
-                        *placement = EEL_BACKGROUND_TILED;
-                }
-                else if (strcmp (tmp, "centered") == 0) {
-                        *placement = EEL_BACKGROUND_CENTERED;
-                }
-                else if (strcmp (tmp, "scaled") == 0) {
-                        *placement = EEL_BACKGROUND_SCALED_ASPECT;
-                }
-                else if (strcmp (tmp, "stretched") == 0) {
-                        *placement = EEL_BACKGROUND_SCALED;
-                }
-                else if (strcmp (tmp, "zoom") == 0) {
-                        *placement = EEL_BACKGROUND_ZOOM;
-                }
-                else if (strcmp (tmp, "spanned") == 0) {
-                        *placement = EEL_BACKGROUND_SPANNED;
-                }
-                else if (strcmp (tmp, "none") == 0) {
-                        g_free (*image);
-                        
-                        *placement = EEL_BACKGROUND_CENTERED;
-                        *image = NULL;
-                }
-                else {
-                        *placement = EEL_BACKGROUND_CENTERED;
-                }
-        }
-        else {
-                *placement = EEL_BACKGROUND_CENTERED;
-        }
-        g_free (tmp);
-                
-        /* Get the color */
-        tmp = gconf_client_get_string (client, BG_PREFERENCES_COLOR_SHADING_TYPE, NULL);
-        if (tmp != NULL) {
-                if (strcmp (tmp, "solid") == 0) {
-                        use_gradient = FALSE;
-                        is_horizontal = FALSE;
-                }
-                else if (strcmp (tmp, "vertical-gradient") == 0) {
-                        use_gradient = TRUE;
-                        is_horizontal = FALSE;
-                }
-                else if (strcmp (tmp, "horizontal-gradient") == 0) {
-                        use_gradient = TRUE;
-                        is_horizontal = TRUE;
-                }
-                else {
-                        use_gradient = FALSE;
-                        is_horizontal = FALSE;
-                }
-        }
-        else {
-                use_gradient = FALSE;
-                is_horizontal = FALSE;
-        }
-        g_free (tmp);
-        
-        read_color (client, BG_PREFERENCES_PRIMARY_COLOR, &primary);
-        read_color (client, BG_PREFERENCES_SECONDARY_COLOR, &secondary);
-
-	start_color   = eel_gdk_rgb_to_color_spec (eel_gdk_color_to_rgb (&primary));
-        end_color     = eel_gdk_rgb_to_color_spec (eel_gdk_color_to_rgb (&secondary));
-
-	if (use_gradient) {
-		*color = eel_gradient_new (start_color, end_color, is_horizontal);
-	} else {
-		*color = g_strdup (start_color);
-	}
-
-	g_free (start_color);
-	g_free (end_color);
-}
-
 static void
 nautilus_file_background_write_desktop_default_settings (void)
 {
-	/* We just unset all the gconf keys so they go back to
-	 * defaults
-	 */
-	GConfClient *client;
-	GConfChangeSet *set;
-
-	client = gconf_client_get_default ();
-	set = gconf_change_set_new ();
-
-	/* the list of keys here has to be kept in sync with libgnome
-	 * schemas, which isn't the most maintainable thing ever.
-	 */
- 	gconf_change_set_unset (set, "/desktop/gnome/background/picture_options");
-	gconf_change_set_unset (set, "/desktop/gnome/background/picture_filename");
-	gconf_change_set_unset (set, "/desktop/gnome/background/picture_opacity");
-	gconf_change_set_unset (set, "/desktop/gnome/background/primary_color");
-	gconf_change_set_unset (set, "/desktop/gnome/background/secondary_color");
-	gconf_change_set_unset (set, "/desktop/gnome/background/color_shading_type");
-
-	/* this isn't atomic yet so it'll be a bit inefficient, but
-	 * someday it might be atomic.
-	 */
- 	gconf_client_commit_change_set (client, set, FALSE, NULL);
-
-	gconf_change_set_unref (set);
+	/* Set the keys to default values */
+	GSettings *settings;
 	
-	g_object_unref (G_OBJECT (client));
+	settings = g_settings_new ("org.gnome.desktop.background");
+	g_settings_delay (settings);
+	
+	/* Keep this in sync with org.gnome.desktop.background.gschema.xml */
+	g_settings_reset (settings, "draw-background");
+	g_settings_reset (settings, "picture-options");
+	g_settings_reset (settings, "picture-filename");
+	g_settings_reset (settings, "picture-opacity");
+	g_settings_reset (settings, "primary-color");
+	g_settings_reset (settings, "secondary-color");
+	g_settings_reset (settings, "color-shading-type");
+	
+	/* Apply changes atomically. */
+	g_settings_apply (settings);
+	g_object_unref (settings);
 }
 
-static int
-call_settings_changed (EelBackground *background)
+static gboolean
+desktop_background_change_event_idle_cb (gpointer user_data)
 {
+	EelBackground *background;
 	NautilusFile *file;
+	
+	background = EEL_BACKGROUND (user_data);
+	
 	file = g_object_get_data (G_OBJECT (background), "eel_background_file");
 	if (file) {
 		saved_settings_changed_callback (file, background);
 	}
-	g_object_set_data (G_OBJECT (background), "desktop_gconf_notification_timeout", GUINT_TO_POINTER (0));
+	
 	return FALSE;
 }
 
-static void
-desktop_background_destroyed_callback (EelBackground *background, void *georgeWBush)
+static gboolean
+desktop_background_gsettings_change_event_cb (GSettings *settings,
+                                              gpointer   keys,
+                                              gint       n_keys,
+                                              gpointer   user_data)
 {
-        guint notification_id;
-        guint notification_timeout_id;
-
-        notification_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (background), "desktop_gconf_notification"));
-        gconf_client_notify_remove (nautilus_gconf_client, notification_id);
-
-        notification_timeout_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (background), "desktop_gconf_notification_timeout"));
-        if (notification_timeout_id != 0) {
-                g_source_remove (notification_timeout_id);
-        }
+	/* Need to defer signal processing otherwise
+	 * we would make the dconf backend deadlock.
+	 */
+	g_idle_add (desktop_background_change_event_idle_cb, user_data);
+	
+	return FALSE;
 }
 
 static void
-desktop_background_gconf_notify_cb (GConfClient *client, guint notification_id, GConfEntry *entry, gpointer data)
+desktop_background_destroyed_callback (EelBackground *background, void *georgeWBush)
 {
-        EelBackground *background;
-        guint notification_timeout_id;
-
-        background = EEL_BACKGROUND (data);
-
-        notification_timeout_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (background), "desktop_gconf_notification_timeout"));
-
-        if (strcmp (entry->key, "/desktop/gnome/background/stamp") == 0) {
-                if (notification_timeout_id != 0) {
-                        g_source_remove (notification_timeout_id);
-                }
-
-                call_settings_changed (background);
-        }
-        else if (notification_timeout_id == 0) {
-                notification_timeout_id = g_timeout_add (300, (GSourceFunc) call_settings_changed, background);
-
-                g_object_set_data (G_OBJECT (background), "desktop_gconf_notification_timeout", GUINT_TO_POINTER (notification_timeout_id));
-        }
+        g_signal_handlers_disconnect_by_func (gnome_background_preferences,
+                                              desktop_background_gsettings_change_event_cb,
+                                              background);
 }
 
 static void
-nautilus_file_background_receive_gconf_changes (EelBackground *background)
+nautilus_file_background_receive_gsettings_changes (EelBackground *background)
 {
-        guint notification_id;
-
-        notification_id = gconf_client_notify_add (nautilus_gconf_client,
-                                                   "/desktop/gnome/background", desktop_background_gconf_notify_cb, background,
-                                                   NULL, NULL);
-
-        g_object_set_data (G_OBJECT (background), "desktop_gconf_notification", GUINT_TO_POINTER (notification_id));
-
-        g_signal_connect (background, "destroy",
-                          G_CALLBACK (desktop_background_destroyed_callback), NULL);
+        /* Let's receive batch change events instead of every single one */
+        g_signal_connect (gnome_background_preferences,
+                          "change-event",
+                          G_CALLBACK (desktop_background_gsettings_change_event_cb),
+                          background);
+
+        g_signal_connect (background,
+                          "destroy",
+                          G_CALLBACK (desktop_background_destroyed_callback),
+                          NULL);
 }
 
 /* return true if the background is not in the default state */
@@ -375,13 +207,12 @@ background_changed_callback (EelBackground *background,
         g_assert (EEL_IS_BACKGROUND (background));
         g_assert (NAUTILUS_IS_FILE (file));
         g_assert (g_object_get_data (G_OBJECT (background), "eel_background_file") == file);
-        
 
 	color = eel_background_get_color (background);
 	image = eel_background_get_image_uri (background);
 
 	if (eel_background_is_desktop (background)) {
-                eel_background_save_to_gconf (background);
+                eel_background_save_to_preferences (background);
 	} else {
 	        /* Block the other handler while we are writing metadata so it doesn't
 	         * try to change the background.
@@ -447,7 +278,7 @@ initialize_background_from_settings (NautilusFile *file,
 {
         char *color;
         char *image;
-	EelBackgroundImagePlacement placement;
+	GDesktopBackgroundStyle placement;
 	
         g_assert (NAUTILUS_IS_FILE (file));
         g_assert (EEL_IS_BACKGROUND (background));
@@ -455,7 +286,7 @@ initialize_background_from_settings (NautilusFile *file,
                   == file);
 
 	if (eel_background_is_desktop (background)) {
-                nautilus_file_background_read_desktop_settings (&color, &image, &placement);
+		eel_background_read_desktop_settings (background, &color, &image, &placement);
 	} else {
 		color = nautilus_file_get_metadata (file,
                                                     NAUTILUS_METADATA_KEY_LOCATION_BACKGROUND_COLOR,
@@ -463,7 +294,7 @@ initialize_background_from_settings (NautilusFile *file,
 		image = nautilus_file_get_metadata (file,
                                                     NAUTILUS_METADATA_KEY_LOCATION_BACKGROUND_IMAGE,
                                                     NULL);
-	        placement = EEL_BACKGROUND_TILED; /* non-tiled only avail for desktop, at least for now */
+	        placement = G_DESKTOP_BACKGROUND_STYLE_WALLPAPER; /* non-tiled only avail for desktop, at least for now */
 
                 /* if there's none, read the default from the theme */
                 if (color == NULL && image == NULL) {
diff --git a/libnautilus-private/nautilus-global-preferences.c b/libnautilus-private/nautilus-global-preferences.c
index 720198f..718b763 100644
--- a/libnautilus-private/nautilus-global-preferences.c
+++ b/libnautilus-private/nautilus-global-preferences.c
@@ -81,6 +81,7 @@ nautilus_global_preferences_init (void)
 	nautilus_desktop_preferences = g_settings_new("org.gnome.nautilus.desktop");
 	nautilus_tree_sidebar_preferences = g_settings_new("org.gnome.nautilus.sidebar-panels.tree");
 	gnome_lockdown_preferences = g_settings_new("org.gnome.desktop.lockdown");
+	gnome_background_preferences = g_settings_new("org.gnome.desktop.background");
 
 	nautilus_gconf_client = gconf_client_get_default ();
 
diff --git a/libnautilus-private/nautilus-global-preferences.h b/libnautilus-private/nautilus-global-preferences.h
index cc4bef8..8f14b7d 100644
--- a/libnautilus-private/nautilus-global-preferences.h
+++ b/libnautilus-private/nautilus-global-preferences.h
@@ -219,6 +219,7 @@ GSettings *nautilus_tree_sidebar_preferences;
 GSettings *nautilus_media_preferences;
 GSettings *nautilus_window_state;
 GSettings *gnome_lockdown_preferences;
+GSettings *gnome_background_preferences;
 
 GConfClient *nautilus_gconf_client;
 
