Index: wp-includes/script-loader.php
===================================================================
--- wp-includes/script-loader.php	(revision 21580)
+++ wp-includes/script-loader.php	(working copy)
@@ -399,6 +399,18 @@
 
 		$scripts->add( 'farbtastic', '/wp-admin/js/farbtastic.js', array('jquery'), '1.2' );
 
+		$iris_deps = array( 'jquery-ui-draggable', 'jquery-ui-slider' );
+		if ( wp_is_mobile() )
+			$iris_deps[] = 'touch-punch';
+		$scripts->add( 'iris', '/wp-admin/js/iris.js', $iris_deps, false, 1 );
+
+		$scripts->add( 'wp-color-picker', "/wp-admin/js/wp-color-picker$suffix.js", array( 'iris' ), false, 1 );
+		did_action( 'init' ) && $scripts->localize( 'wp-color-picker', 'wpColorPickerL10n', array(
+			'clear' => __( 'Clear' ),
+			'defaultString' => __( 'Default' ),
+			'pick' => __( 'Select a Color' )
+		));
+
 		$scripts->add( 'dashboard', "/wp-admin/js/dashboard$suffix.js", array( 'jquery', 'admin-comments', 'postbox' ), false, 1 );
 
 		$scripts->add( 'list-revisions', "/wp-includes/js/wp-list-revisions$suffix.js" );
@@ -426,7 +438,7 @@
 			'saveAlert' => __('The changes you made will be lost if you navigate away from this page.')
 		) );
 
-		$scripts->add( 'custom-background', "/wp-admin/js/custom-background$suffix.js", array('farbtastic'), false, 1 );
+		$scripts->add( 'custom-background', "/wp-admin/js/custom-background$suffix.js", array('wp-color-picker'), false, 1 );
 		$scripts->add( 'media-gallery', "/wp-admin/js/media-gallery$suffix.js", array('jquery'), false, 1 );
 	}
 }
@@ -479,6 +491,7 @@
 	$styles->add( 'install', "/wp-admin/css/install$suffix.css" );
 	$styles->add( 'thickbox', '/wp-includes/js/thickbox/thickbox.css' );
 	$styles->add( 'farbtastic', '/wp-admin/css/farbtastic.css', array(), '1.3u1' );
+	$styles->add( 'wp-color-picker', '/wp-admin/css/wp-color-picker.css' );
 	$styles->add( 'jcrop', '/wp-includes/js/jcrop/jquery.Jcrop.css', array(), '0.9.8' );
 	$styles->add( 'imgareaselect', '/wp-includes/js/imgareaselect/imgareaselect.css', array(), '0.9.8' );
 	$styles->add( 'admin-bar', "/wp-includes/css/admin-bar$suffix.css" );
Index: wp-content/themes/twentyeleven/inc/theme-options.php
===================================================================
--- wp-content/themes/twentyeleven/inc/theme-options.php	(revision 21580)
+++ wp-content/themes/twentyeleven/inc/theme-options.php	(working copy)
@@ -17,8 +17,8 @@
  */
 function twentyeleven_admin_enqueue_scripts( $hook_suffix ) {
 	wp_enqueue_style( 'twentyeleven-theme-options', get_template_directory_uri() . '/inc/theme-options.css', false, '2011-04-28' );
-	wp_enqueue_script( 'twentyeleven-theme-options', get_template_directory_uri() . '/inc/theme-options.js', array( 'farbtastic' ), '2011-06-10' );
-	wp_enqueue_style( 'farbtastic' );
+	wp_enqueue_script( 'twentyeleven-theme-options', get_template_directory_uri() . '/inc/theme-options.js', array( 'wp-color-picker' ), '2012-08-22' );
+	wp_enqueue_style('wp-color-picker');
 }
 add_action( 'admin_print_styles-appearance_page_theme_options', 'twentyeleven_admin_enqueue_scripts' );
 
@@ -268,12 +268,8 @@
 function twentyeleven_settings_field_link_color() {
 	$options = twentyeleven_get_theme_options();
 	?>
-	<input type="text" name="twentyeleven_theme_options[link_color]" id="link-color" value="<?php echo esc_attr( $options['link_color'] ); ?>" />
-	<a href="#" class="pickcolor hide-if-no-js" id="link-color-example"></a>
-	<input type="button" class="pickcolor button hide-if-no-js" value="<?php esc_attr_e( 'Select a Color', 'twentyeleven' ); ?>" />
-	<div id="colorPickerDiv" style="z-index: 100; background:#eee; border:1px solid #ccc; position:absolute; display:none;"></div>
-	<br />
-	<span><?php printf( __( 'Default color: %s', 'twentyeleven' ), '<span id="default-color">' . twentyeleven_get_default_link_color( $options['color_scheme'] ) . '</span>' ); ?></span>
+	<?php $default_color = 'data-default-color="' . twentyeleven_get_default_link_color( $options['color_scheme'] ) . '"'; ?> 
+	<input type="text" name="twentyeleven_theme_options[link_color]" id="link-color" value="<?php echo esc_attr( $options['link_color'] ); ?>" <?php echo $default_color ?>/>
 	<?php
 }
 
Index: wp-content/themes/twentyeleven/inc/theme-options.js
===================================================================
--- wp-content/themes/twentyeleven/inc/theme-options.js	(revision 21580)
+++ wp-content/themes/twentyeleven/inc/theme-options.js	(working copy)
@@ -1,52 +1,17 @@
-var farbtastic;
-
 (function($){
-	var pickColor = function(a) {
-		farbtastic.setColor(a);
-		$('#link-color').val(a);
-		$('#link-color-example').css('background-color', a);
-	};
 
 	$(document).ready( function() {
-		$('#default-color').wrapInner('<a href="#" />');
-
-		farbtastic = $.farbtastic('#colorPickerDiv', pickColor);
-
-		pickColor( $('#link-color').val() );
-
-		$('.pickcolor').click( function(e) {
-			$('#colorPickerDiv').show();
-			e.preventDefault();
-		});
-
-		$('#link-color').keyup( function() {
-			var a = $('#link-color').val(),
-				b = a;
-
-			a = a.replace(/[^a-fA-F0-9]/, '');
-			if ( '#' + a !== b )
-				$('#link-color').val(a);
-			if ( a.length === 3 || a.length === 6 )
-				pickColor( '#' + a );
-		});
-
-		$(document).mousedown( function() {
-			$('#colorPickerDiv').hide();
-		});
-
-		$('#default-color a').click( function(e) {
-			pickColor( '#' + this.innerHTML.replace(/[^a-fA-F0-9]/, '') );
-			e.preventDefault();
-		});
-
+	
+		$('#link-color').wpColorPicker();
+		
 		$('.image-radio-option.color-scheme input:radio').change( function() {
-			var currentDefault = $('#default-color a'),
+			var currentDefault = $('#link-color').attr('data-default-color'),
 				newDefault = $(this).next().val();
 
-			if ( $('#link-color').val() == currentDefault.text() )
-				pickColor( newDefault );
-
-			currentDefault.text( newDefault );
+			if ( $('#link-color').val() == currentDefault.toString() ) {
+				$("#link-color").iris("option", "color", newDefault )
+			}
 		});
+		
 	});
 })(jQuery);
\ No newline at end of file
Index: wp-admin/js/custom-background.dev.js
===================================================================
--- wp-admin/js/custom-background.dev.js	(revision 21580)
+++ wp-admin/js/custom-background.dev.js	(working copy)
@@ -1,66 +1,24 @@
-var farbtastic, pickColor;
-
 (function($) {
 
-	var defaultColor = '';
-
-	pickColor = function(color) {
-		farbtastic.setColor(color);
-		$('#background-color').val(color);
-		$('#custom-background-image').css('background-color', color);
-		// If we have a default color, and they match, then we need to hide the 'Default' link.
-		// Otherwise, we hide the 'Clear' link when it is empty.
-		if ( ( defaultColor && color === defaultColor ) || ( ! defaultColor && ( '' === color || '#' === color ) ) )
-			$('#clearcolor').hide();
-		else
-			$('#clearcolor').show();
-	}
-
 	$(document).ready(function() {
+		var bgImage = $("#custom-background-image");
 
-		defaultColor = $('#defaultcolor').val();
-
-		$('#pickcolor').click(function() {
-			$('#colorPickerDiv').show();
-			return false;
+		$('#background-color').wpColorPicker({
+			change: function( event, ui ) {
+				bgImage.css('background-color', ui.color.toString());
+			},
+			clear: function() {
+				bgImage.css('background-color', '');
+			}
 		});
 
-		$('#clearcolor a').click( function(e) {
-			pickColor( defaultColor );
-			e.preventDefault();
-		});
-
-		$('#background-color').keyup(function() {
-			var _hex = $('#background-color').val(), hex = _hex;
-			if ( hex.charAt(0) != '#' )
-				hex = '#' + hex;
-			hex = hex.replace(/[^#a-fA-F0-9]+/, '');
-			if ( hex != _hex )
-				$('#background-color').val(hex);
-			if ( hex.length == 4 || hex.length == 7 )
-				pickColor( hex );
-		});
-
 		$('input[name="background-position-x"]').change(function() {
-			$('#custom-background-image').css('background-position', $(this).val() + ' top');
+			bgImage.css('background-position', $(this).val() + ' top');
 		});
 
 		$('input[name="background-repeat"]').change(function() {
-			$('#custom-background-image').css('background-repeat', $(this).val());
+			bgImage.css('background-repeat', $(this).val());
 		});
-
-		farbtastic = $.farbtastic('#colorPickerDiv', function(color) {
-			pickColor(color);
-		});
-		pickColor($('#background-color').val());
-
-		$(document).mousedown(function(){
-			$('#colorPickerDiv').each(function(){
-				var display = $(this).css('display');
-				if ( display == 'block' )
-					$(this).fadeOut(2);
-			});
-		});
 	});
 
 })(jQuery);
\ No newline at end of file
Index: wp-admin/custom-background.php
===================================================================
--- wp-admin/custom-background.php	(revision 21580)
+++ wp-admin/custom-background.php	(working copy)
@@ -108,7 +108,7 @@
 		add_thickbox();
 		wp_enqueue_script('media-upload');
 		wp_enqueue_script('custom-background');
-		wp_enqueue_style('farbtastic');
+		wp_enqueue_style('wp-color-picker');
 	}
 
 	/**
@@ -327,11 +327,8 @@
 <tr valign="top">
 <th scope="row"><?php _e( 'Background Color' ); ?></th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e( 'Background Color' ); ?></span></legend>
-<?php $show_clear = get_theme_mod('background_color') ? '' : ' style="display:none"'; ?>
-<input type="text" name="background-color" id="background-color" value="#<?php echo esc_attr(get_background_color()) ?>" />
-<a class="hide-if-no-js" href="#" id="pickcolor"><?php _e('Select a Color'); ?></a> <span<?php echo $show_clear; ?> class="hide-if-no-js" id="clearcolor"> (<a href="#"><?php current_theme_supports( 'custom-background', 'default-color' ) ? _e( 'Default' ) : _e( 'Clear' ); ?></a>)</span>
-<input type="hidden" id="defaultcolor" value="<?php if ( current_theme_supports( 'custom-background', 'default-color' ) ) echo '#' . esc_attr( get_theme_support( 'custom-background', 'default-color' ) ); ?>" />
-<div id="colorPickerDiv" style="z-index: 100; background:#eee; border:1px solid #ccc; position:absolute; display:none;"></div>
+<?php $default_color = current_theme_supports( 'custom-background', 'default-color' ) ? 'data-default-color="#' . esc_attr( get_theme_support( 'custom-background', 'default-color' ) ) . '" ' : ''; ?>
+<input type="text" name="background-color" id="background-color" value="#<?php echo esc_attr(get_background_color()) ?>" <?php echo $default_color ?>/>
 </fieldset></td>
 </tr>
 </tbody>
