Index: wp-admin/custom-background.php
===================================================================
--- wp-admin/custom-background.php	(revision 22318)
+++ wp-admin/custom-background.php	(working copy)
@@ -151,12 +151,21 @@
 		if ( isset($_POST['background-position-x']) ) {
 			check_admin_referer('custom-background');
 			if ( in_array($_POST['background-position-x'], array('center', 'right', 'left')) )
-				$position = $_POST['background-position-x'];
+				$hposition = $_POST['background-position-x'];
 			else
-				$position = 'left';
-			set_theme_mod('background_position_x', $position);
+				$hposition = 'left';
+			set_theme_mod('background_position_x', $hposition);
 		}
 
+		if ( isset($_POST['background-position-y']) ) {
+			check_admin_referer('custom-background');
+			if ( in_array($_POST['background-position-y'], array('center', 'top', 'bottom')) )
+				$vposition = $_POST['background-position-y'];
+			else
+				$vposition = 'top';
+			set_theme_mod('background_position_y', $vposition);
+		}
+		
 		if ( isset($_POST['background-attachment']) ) {
 			check_admin_referer('custom-background');
 			if ( in_array($_POST['background-attachment'], array('fixed', 'scroll')) )
@@ -213,7 +222,7 @@
 	// background-image URL must be single quote, see below
 	$background_styles .= ' background-image: url(\'' . set_url_scheme( get_theme_mod( 'background_image_thumb', get_background_image() ) ) . '\');'
 		. ' background-repeat: ' . get_theme_mod('background_repeat', 'repeat') . ';'
-		. ' background-position: top ' . get_theme_mod('background_position_x', 'left');
+		. ' background-position: ' . get_theme_mod('background_position_y', 'top') . get_theme_mod('background_position_x', 'left');
 }
 ?>
 <div id="custom-background-image" style="<?php echo $background_styles; ?>"><?php // must be double quote, see above ?>
@@ -283,7 +292,7 @@
 <tbody>
 <?php if ( get_background_image() ) : ?>
 <tr valign="top">
-<th scope="row"><?php _e( 'Position' ); ?></th>
+<th scope="row"><?php _e( 'Horizontal Position' ); ?></th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e( 'Background Position' ); ?></span></legend>
 <label>
 <input name="background-position-x" type="radio" value="left"<?php checked('left', get_theme_mod('background_position_x', 'left')); ?> />
@@ -301,6 +310,24 @@
 </tr>
 
 <tr valign="top">
+<th scope="row"><?php _e( 'Vertical Position' ); ?></th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e( 'Background Position' ); ?></span></legend>
+<label>
+<input name="background-position-y" type="radio" value="top"<?php checked('top', get_theme_mod('background_position_y', 'top')); ?> />
+<?php _e('Top') ?>
+</label>
+<label>
+<input name="background-position-y" type="radio" value="center"<?php checked('center', get_theme_mod('background_position_y', 'top')); ?> />
+<?php _e('Center') ?>
+</label>
+<label>
+<input name="background-position-y" type="radio" value="bottom"<?php checked('bottom', get_theme_mod('background_position_y', 'top')); ?> />
+<?php _e('Bottom') ?>
+</label>
+</fieldset></td>
+</tr>
+
+<tr valign="top">
 <th scope="row"><?php _e( 'Repeat' ); ?></th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e( 'Background Repeat' ); ?></span></legend>
 <label><input type="radio" name="background-repeat" value="no-repeat"<?php checked('no-repeat', get_theme_mod('background_repeat', 'repeat')); ?> /> <?php _e('No Repeat'); ?></label>
Index: wp-includes/class-wp-customize-manager.php
===================================================================
--- wp-includes/class-wp-customize-manager.php	(revision 22318)
+++ wp-includes/class-wp-customize-manager.php	(working copy)
@@ -847,7 +847,7 @@
 		) );
 
 		$this->add_control( 'background_position_x', array(
-			'label'      => __( 'Background Position' ),
+			'label'      => __( 'Horizontal Background Position' ),
 			'section'    => 'background_image',
 			'type'       => 'radio',
 			'choices'    => array(
@@ -856,7 +856,23 @@
 				'right'      => __('Right'),
 			),
 		) );
+		
+		$this->add_setting( 'background_position_y', array(
+			'default'        => 'top',
+			'theme_supports' => 'custom-background',
+		) );
 
+		$this->add_control( 'background_position_y', array(
+			'label'      => __( 'Vertical Background Position' ),
+			'section'    => 'background_image',
+			'type'       => 'radio',
+			'choices'    => array(
+				'top'       => __('Top'),
+				'center'     => __('Center'),
+				'bottom'      => __('Bottom'),
+			),
+		) );
+
 		$this->add_setting( 'background_attachment', array(
 			'default'        => 'fixed',
 			'theme_supports' => 'custom-background',
Index: wp-includes/theme.php
===================================================================
--- wp-includes/theme.php	(revision 22318)
+++ wp-includes/theme.php	(working copy)
@@ -1139,10 +1139,13 @@
 			$repeat = 'repeat';
 		$repeat = " background-repeat: $repeat;";
 
-		$position = get_theme_mod( 'background_position_x', 'left' );
-		if ( ! in_array( $position, array( 'center', 'right', 'left' ) ) )
-			$position = 'left';
-		$position = " background-position: top $position;";
+		$hposition = get_theme_mod( 'background_position_x', 'left' );
+		if ( ! in_array( $hposition, array( 'center', 'right', 'left' ) ) )
+			$hposition = 'left';
+		$vposition = get_theme_mod( 'background_position_y', 'top' );
+		if ( ! in_array( $vposition, array( 'center', 'top', 'bottom' ) ) )
+			$vposition = 'top';
+		$position = " background-position: $vposition $hposition;";
 
 		$attachment = get_theme_mod( 'background_attachment', 'scroll' );
 		if ( ! in_array( $attachment, array( 'fixed', 'scroll' ) ) )
