diff -ur nautilus-2.8.2/libbackground/applier.c nautilus-2.8.2-bgzoom/libbackground/applier.c
--- nautilus-2.8.2/libbackground/applier.c	2004-07-02 09:06:22.000000000 +0100
+++ nautilus-2.8.2-bgzoom/libbackground/applier.c	2004-12-12 19:36:25.612983616 +0000
@@ -1224,6 +1224,28 @@
 
 		break;
 
+	case WPTYPE_ZOOM:
+		asp = (gdouble) pwidth / (gdouble) virtual_geom->width;
+
+		if (asp > (gdouble) pheight / virtual_geom->height) {
+			src_geom->width = pwidth * virtual_geom->height / pheight;
+			src_geom->height = pheight;
+			src_geom->x = (pwidth - src_geom->width) / 2;
+			src_geom->y = 0;
+		} else {
+			src_geom->width = pwidth;
+			src_geom->height = pheight * virtual_geom->width / pwidth;
+			src_geom->x = 0;
+			src_geom->y = (pheight - src_geom->height) / 2;
+		}
+
+
+		dest_geom->x = dest_geom->y = 0;
+		dest_geom->width = field_geom->width;
+		dest_geom->height = field_geom->height;
+
+		break;
+
 	case WPTYPE_STRETCHED:
 		dest_geom->width = field_geom->width;
 		dest_geom->height = field_geom->height;
diff -ur nautilus-2.8.2/libbackground/preferences.c nautilus-2.8.2-bgzoom/libbackground/preferences.c
--- nautilus-2.8.2/libbackground/preferences.c	2002-04-20 12:09:30.000000000 +0100
+++ nautilus-2.8.2-bgzoom/libbackground/preferences.c	2004-12-12 17:58:07.000000000 +0000
@@ -49,6 +49,7 @@
 	{ WPTYPE_CENTERED, "WPTYPE_CENTERED", "centered"},
 	{ WPTYPE_SCALED, "WPTYPE_SCALED", "scaled"},
 	{ WPTYPE_STRETCHED, "WPTYPE_STRETCHED", "stretched"},
+	{ WPTYPE_ZOOM, "WPTYPE_ZOOM", "zoom"},
 	{ WPTYPE_NONE, "WPTYPE_NONE", "none"},
 	{ 0, NULL, NULL }
 };
@@ -360,6 +361,8 @@
 			type =  WPTYPE_SCALED;
 		} else if (!strncmp (string, "stretched", sizeof ("stretched"))) {
 			type =  WPTYPE_STRETCHED;
+		} else if (!strncmp (string, "zoom", sizeof ("zoom"))) {
+			type =  WPTYPE_ZOOM;
 		}
 		g_free (string);
 	}
@@ -409,6 +412,8 @@
 			return "scaled";
 		case WPTYPE_STRETCHED:
 			return "stretched";
+		case WPTYPE_ZOOM:
+			return "zoom";
 		case WPTYPE_NONE:
 			return "none";
 	        case WPTYPE_UNSET:
diff -ur nautilus-2.8.2/libbackground/preferences.h nautilus-2.8.2-bgzoom/libbackground/preferences.h
--- nautilus-2.8.2/libbackground/preferences.h	2002-03-20 08:04:17.000000000 +0000
+++ nautilus-2.8.2-bgzoom/libbackground/preferences.h	2004-12-12 17:58:07.000000000 +0000
@@ -52,7 +52,7 @@
 
 typedef enum _wallpaper_type_t {
 	WPTYPE_TILED = 0, WPTYPE_CENTERED, WPTYPE_SCALED,
-	WPTYPE_STRETCHED, WPTYPE_NONE,
+	WPTYPE_STRETCHED, WPTYPE_ZOOM, WPTYPE_NONE,
 	WPTYPE_UNSET
 } wallpaper_type_t;
 
diff -ur nautilus-2.8.2/libnautilus-private/nautilus-directory-background.c nautilus-2.8.2-bgzoom/libnautilus-private/nautilus-directory-background.c
--- nautilus-2.8.2/libnautilus-private/nautilus-directory-background.c	2004-04-13 15:13:15.000000000 +0100
+++ nautilus-2.8.2-bgzoom/libnautilus-private/nautilus-directory-background.c	2004-12-12 18:03:56.000000000 +0000
@@ -217,6 +217,9 @@
         case WPTYPE_SCALED:
                 *placement = EEL_BACKGROUND_SCALED_ASPECT;
                 break;
+	case WPTYPE_ZOOM:
+		*placement = EEL_BACKGROUND_ZOOM;
+		break;
         }
 	
         end_color     = eel_gdk_rgb_to_color_spec (eel_gdk_color_to_rgb (prefs->color2));
@@ -293,6 +296,9 @@
 			case EEL_BACKGROUND_SCALED_ASPECT:
 				wallpaper_align = WPTYPE_SCALED;
 				break;
+			case EEL_BACKGROUND_ZOOM:
+				wallpaper_align = WPTYPE_ZOOM;
+				break;
 			default:
 				g_assert_not_reached ();
 				wallpaper_align = WPTYPE_TILED;
