Index: wp-includes/theme.php
===================================================================
--- wp-includes/theme.php	(revision 20992)
+++ wp-includes/theme.php	(working copy)
@@ -1102,10 +1102,14 @@
  * @access protected
  */
 function _custom_background_cb() {
-	$background = get_theme_mod( 'background_image' );
+	// $background is the saved custom image, or the default image.
+	$background = get_background_image();
+
+	// $color is the saved custom color.
+	// A default has to be specified in style.css. It will not be printed here.
 	$color = get_theme_mod( 'background_color' );
 
-	if ( ! $background && ! $color )
+	if ( ! $background && ! $color && ! get_theme_support( 'custom-background', 'default-image' ) )
 		return;
 
 	$style = $color ? "background-color: #$color;" : '';
@@ -1129,6 +1133,10 @@
 		$attachment = " background-attachment: $attachment;";
 
 		$style .= $image . $repeat . $position . $attachment;
+	} elseif ( get_theme_support( 'custom-background', 'default-image' ) ) {
+		// If there is not a $background, but there is a default, then the default was
+		// removed and an empty value was saved. Remove it:
+		$style .= " background-image: none;";
 	}
 ?>
 <style type="text/css" id="custom-background-css">
Index: wp-includes/post-template.php
===================================================================
--- wp-includes/post-template.php	(revision 20992)
+++ wp-includes/post-template.php	(working copy)
@@ -501,10 +501,7 @@
 	if ( is_admin_bar_showing() )
 		$classes[] = 'admin-bar';
 
-	if ( get_theme_mod( 'background_image' ) || get_theme_mod( 'background_color' ) ||
-		( '_custom_background_cb' != get_theme_support( 'custom-background', 'wp-head-callback' )
-			&& ( get_theme_support( 'custom-background', 'default-image' ) ||
-				get_theme_support( 'custom-background', 'default-color' ) ) ) )
+	if ( get_background_color() || get_theme_mod( 'background_image' ) || get_theme_support( 'custom-background', 'default-image' ) )
 		$classes[] = 'custom-background';
 
 	$page = $wp_query->get( 'page' );
