Index: wp-includes/theme.php
===================================================================
--- wp-includes/theme.php	(revision 13805)
+++ wp-includes/theme.php	(working copy)
@@ -1440,20 +1440,33 @@
 	if ( !$background && !$color )
 		return;
 
-	$repeat = get_theme_mod('background_repeat', 'repeat');
-	if ( 'no-repeat' == $repeat )
-		$repeat = 'background-repeat: no-repeat;';
-	else
-		$repeat = 'background-repeat: repeat;';
-	$position = get_theme_mod('background_position', 'left');
-	if  ( 'center' == $position )
-		$position = 'background-position: top center;';
-	elseif ( 'right' == $position )
-		$position = 'background-position: top right;';
-	else
-		$position = 'background-position: top left;';
-	$attachment = get_theme_mod('background_attachment', 'fixed');
-	if ( 'scroll' == $attachment )
+	switch( get_theme_mod('background_repeat', 'repeat') ) {
+	
+		case 'no-repeat':
+			$repeat = 'background-repeat: no-repeat;';
+			break;
+		case 'repeat-x';
+			$repeat = 'background-repeat: repeat-x;';
+			break;		
+		case 'repeat-y':
+			$repeat = 'background-repeat: repeat-y;';		
+			break;
+		default:
+			$repeat = 'background-repeat: repeat;';
+	}
+
+	switch ( get_theme_mod('background_position', 'left') ) {
+		case 'center':
+			$position = 'background-position: top center;';
+			break;
+		case 'right':
+			$position = 'background-position: top right;';
+			break;
+		default:
+			$position = 'background-position: top left;';
+	}
+
+	if ( 'scroll' == get_theme_mod('background_attachment', 'fixed') )
 		$attachment = 'background-attachment: scroll;';
 	else
 		$attachment = 'background-attachment: fixed;';
@@ -1463,11 +1476,6 @@
 	else
 		$image = '';
 
-	if ( !empty($background ) )
-		$image = "background-image: url('$background');";
-	else
-		$image = '';
-
 	if ( !empty($color) )
 		$color = "background-color: #$color;";
 	else
Index: wp-admin/js/custom-background.dev.js
===================================================================
--- wp-admin/js/custom-background.dev.js	(revision 13805)
+++ wp-admin/js/custom-background.dev.js	(working copy)
@@ -22,9 +22,12 @@
 			pickColor( hex );
 	});
 	jQuery('input[name="background-position"]').change(function() {
-		jQuery('#custom-background-image').css('text-align', jQuery(this).val());
+		jQuery('#custom-background-image').css('background-position', 'top '+jQuery(this).val());
 	});
-
+	jQuery('select[name="background-repeat"]').change(function() {
+		jQuery('#custom-background-image').css('background-repeat', jQuery(this).val());
+	});
+	
 	farbtastic = jQuery.farbtastic('#colorPickerDiv', function(color) {
 		pickColor(color);
 	});
Index: wp-admin/css/wp-admin.dev.css
===================================================================
--- wp-admin/css/wp-admin.dev.css	(revision 13805)
+++ wp-admin/css/wp-admin.dev.css	(working copy)
@@ -3662,7 +3662,7 @@
 
 div#custom-background-image img {
 	max-width: 400px;
-	max-height: 200px;
+	max-height: 300px;
 }
 
 /* Custom Header */
Index: wp-admin/custom-background.php
===================================================================
--- wp-admin/custom-background.php	(revision 13805)
+++ wp-admin/custom-background.php	(working copy)
@@ -98,7 +98,7 @@
 		}
 
 		if ( isset($_POST['background-repeat']) ) {
-			if ( in_array($_POST['background-repeat'], array('repeat', 'no-repeat')) )
+			if ( in_array($_POST['background-repeat'], array('repeat', 'no-repeat', 'repeat-x', 'repeat-y')) )
 				$repeat = $_POST['background-repeat'];
 			else
 				$repeat = 'repeat';
@@ -149,15 +149,22 @@
 	if ( $this->admin_image_div_callback ) {
 		call_user_func($this->admin_image_div_callback);
 	} else {
-		if ( $bgcolor = get_background_color() )
-			$bgcolor = 'background-color: #' . $bgcolor . ';';
+?>
 
-		if ( $align = get_theme_mod('background_position', 'left') )
-			$align = "text-align: $align;";		 
-?>
-<div id="custom-background-image"  style="<?php echo $bgcolor, $align ?>">
+<style type="text/css"> 
+#custom-background-image {
+	background-color: #<?=get_background_color()?>;
+	<?php if ( get_background_image() ) { ?>
+	background: url(<?=get_theme_mod('background_image_thumb', '')?>);
+	background-repeat: <?=get_theme_mod('background_repeat', 'no-repeat')?>;
+	background-position: top <?=get_theme_mod('background_position', 'left')?>;
+	background-attachment: <?=get_theme_mod('background_position', 'fixed')?>;
+	<?php } ?>
+}
+</style> 
+<div id="custom-background-image">
 <?php if ( get_background_image() ) { ?>
-<img class="custom-background-image" src="<?php background_image(); ?>" />
+<img class="custom-background-image" src="<?=get_theme_mod('background_image_thumb', '')?>" style="visibility:hidden;" />
 <?php } ?>
 <br class="clear" />
 </div>
@@ -192,13 +199,13 @@
 
 <td><fieldset><legend class="screen-reader-text"><span><?php _e( 'Repeat' ); ?></span></legend>
 <label>
-<input name="background-repeat" type="radio" value="no-repeat" <?php checked('no-repeat', get_theme_mod('background_repeat', 'repeat')); ?> />
-<?php _e('No repeat') ?>
+<select name="background-repeat">
+	<option value="no-repeat" <?php selected('no-repeat', get_theme_mod('background_repeat', 'repeat')); ?> ><?php _e('No repeat') ?></option>
+	<option value="repeat" <?php selected('repeat', get_theme_mod('background_repeat', 'repeat')); ?>><?php _e('Tile') ?></option>
+	<option value="repeat-x" <?php selected('repeat-x', get_theme_mod('background_repeat', 'repeat')); ?>><?php _e('Tile Horizontally') ?></option>
+	<option value="repeat-y" <?php selected('repeat-y', get_theme_mod('background_repeat', 'repeat')); ?>><?php _e('Tile Vertically') ?></option>
+</select>
 </label>
-<label>
-<input name="background-repeat" type="radio" value="repeat" <?php checked('repeat', get_theme_mod('background_repeat', 'repeat')); ?> />
-<?php _e('Tile') ?>
-</label>
 </fieldset></td>
 
 <td><fieldset><legend class="screen-reader-text"><span><?php _e( 'Attachment' ); ?></span></legend>
@@ -286,6 +293,10 @@
 		wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
 
 		set_theme_mod('background_image', esc_url($url));
+		
+		$thumbnail = wp_get_attachment_image_src( $id, 'thumbnail' );
+		set_theme_mod('background_image_thumb', esc_url( $thumbnail[0] ) );
+		
 		do_action('wp_create_file_in_uploads', $file, $id); // For replication
 		$this->updated = true;
 	}
