Index: src/wp-admin/includes/misc.php
===================================================================
--- src/wp-admin/includes/misc.php	(revision 26549)
+++ src/wp-admin/includes/misc.php	(working copy)
@@ -613,16 +613,16 @@
 	<?php
 }
 
-function set_color_scheme_json() {
+function wp_color_scheme_settings() {
 	global $_wp_admin_css_colors;
 
 	$color_scheme = get_user_option( 'admin_color' );
 
-	if ( isset( $_wp_admin_css_colors[ $color_scheme ]->icon_colors ) ) {
-		echo '<script type="text/javascript">var wp_color_scheme = ' . json_encode( array( 'icons' => $_wp_admin_css_colors[ $color_scheme ]->icon_colors ) ) . ";</script>\n";
+	if ( ! empty( $_wp_admin_css_colors[ $color_scheme ]->icon_colors ) ) {
+		echo '<script type="text/javascript">var _wpColorScheme = ' . json_encode( array( 'icons' => $_wp_admin_css_colors[ $color_scheme ]->icon_colors ) ) . ";</script>\n";
 	}
 }
-add_action( 'admin_head', 'set_color_scheme_json' );
+add_action( 'admin_head', 'wp_color_scheme_settings' );
 
 function _ipad_meta() {
 	if ( wp_is_mobile() ) {
Index: src/wp-admin/js/user-profile.js
===================================================================
--- src/wp-admin/js/user-profile.js	(revision 26548)
+++ src/wp-admin/js/user-profile.js	(working copy)
@@ -83,7 +83,8 @@
 		current_user_id = $( 'input[name="checkuser_id"]' ).val();
 
 		$colorpicker.on( 'click.colorpicker', '.color-option', function() {
-			var $this = $(this);
+			var colors,
+				$this = $(this);
 
 			if ( $this.hasClass( 'selected' ) ) {
 				return;
@@ -99,8 +100,14 @@
 
 				// repaint icons
 				if ( typeof window.svgPainter !== 'undefined' ) {
-					svgPainter.setColors( $.parseJSON( $this.children( '.icon_colors' ).val() ) );
-					svgPainter.paint();
+					try {
+						colors = $.parseJSON( $this.children( '.icon_colors' ).val() );
+					} catch ( error ) {}
+
+					if ( colors ) {
+						svgPainter.setColors( colors );
+						svgPainter.paint();
+					}
 				}
 
 				// update user option
Index: src/wp-includes/general-template.php
===================================================================
--- src/wp-includes/general-template.php	(revision 26548)
+++ src/wp-includes/general-template.php	(working copy)
@@ -2117,7 +2117,8 @@
 function register_admin_color_schemes() {
 	wp_admin_css_color( 'fresh', _x( 'Default', 'admin color scheme' ),
 		admin_url( 'css/colors-fresh.min.css' ),
-		array( '#222', '#333', '#0074a2', '#2ea2cc' )
+		array( '#222', '#333', '#0074a2', '#2ea2cc' ),
+		array( 'base' => '#999', 'focus' => '#2ea2cc', 'current' => '#fff' )
 	);
 
 	// Other color schemes are not available when running out of src
Index: src/wp-includes/js/svg-painter.js
===================================================================
--- src/wp-includes/js/svg-painter.js	(revision 26548)
+++ src/wp-includes/js/svg-painter.js	(working copy)
@@ -1,106 +1,185 @@
 /* global wp_color_scheme:true */
 var svgPainter = ( function( $, window, document, undefined ) {
-
 	'use strict';
+	var colorscheme, selector, base64,
+		elements = [];
 
 	$(document).ready( function() {
-
 		// detection for browser SVG capability
 		if ( document.implementation.hasFeature( 'http://www.w3.org/TR/SVG11/feature#Image', '1.1' ) ) {
-			document.body.className = document.body.className.replace( 'no-svg', 'svg' );
+			$( document.body ).removeClass( 'no-svg' ).addClass( 'svg' );
+			svgPainter.init();
 		}
+	});
 
-		svgPainter.init();
+	/**
+	 * Needed only for IE9
+	 *
+	 * Based on jquery.base64.js 0.0.3 - https://github.com/yckart/jquery.base64.js
+	 *
+	 * Based on: https://gist.github.com/Yaffle/1284012
+	 *
+	 * Copyright (c) 2012 Yannick Albert (http://yckart.com)
+	 * Licensed under the MIT license
+	 * http://www.opensource.org/licenses/mit-license.php
+	 */
+	base64 = ( function() {
+		var c,
+			b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
+			a256 = '',
+			r64 = [256],
+			r256 = [256],
+			i = 0;
 
-	});
+		while( i < 256 ) {
+			c = String.fromCharCode(i);
+			a256 += c;
+			r256[i] = i;
+			r64[i] = b64.indexOf(c);
+			++i;
+		}
 
-	return {
+		function code( s, discard, alpha, beta, w1, w2 ) {
+			var tmp, length,
+				buffer = 0,
+				i = 0,
+				result = '',
+				bitsInBuffer = 0;
 
-		elements : [],
+			s = String(s);
+			length = s.length;
 
-		init : function() {
+			while( i < length ) {
+				c = s.charCodeAt(i);
+				c = c < 256 ? alpha[c] : -1;
 
-			this.selector = $( '#adminmenu .wp-menu-image, #wpadminbar .ab-item' );
+				buffer = ( buffer << w1 ) + c;
+				bitsInBuffer += w1;
 
+				while( bitsInBuffer >= w2 ) {
+					bitsInBuffer -= w2;
+					tmp = buffer >> bitsInBuffer;
+					result += beta.charAt(tmp);
+					buffer ^= tmp << bitsInBuffer;
+				}
+				++i;
+			}
+
+			if ( ! discard && bitsInBuffer > 0 ) {
+				result += beta.charAt( buffer << ( w2 - bitsInBuffer ) );
+			}
+
+			return result;
+		}
+
+		function btoa( plain ) {
+			plain = code( plain, false, r256, b64, 8, 6 );
+			return plain + '===='.slice( ( plain.length % 4 ) || 4 );
+		}
+
+		function atob( coded ) {
+			var i;
+
+			coded = coded.replace( /[^A-Za-z0-9\+\/\=]/g, '' );
+			coded = String(coded).split('=');
+			i = coded.length;
+
+			do {
+				--i;
+				coded[i] = code( coded[i], true, r64, a256, 6, 8 );
+			} while ( i > 0 );
+
+			coded = coded.join('');
+			return coded;
+		}
+
+		return {
+			atob: atob,
+			btoa: btoa
+		};
+	})();
+
+	return {
+		init: function() {
+			selector = $( '#adminmenu .wp-menu-image, #wpadminbar .ab-item' );
+
 			this.setColors();
 			this.findElements();
 			this.paint();
-
 		},
 
-		setColors : function( colors ) {
+		setColors: function( colors ) {
+			if ( typeof colors === 'undefined' && typeof window._wpColorScheme !== 'undefined' ) {
+				colors = window._wpColorScheme;
+			}
 
-			if ( typeof colors === 'undefined' && typeof wp_color_scheme !== 'undefined' ) {
-				colors = wp_color_scheme;
+			if ( colors && colors.icons && colors.icons.base && colors.icons.current && colors.icons.focus ) {
+				colorscheme = colors.icons;
 			}
-
-			this.colorscheme = colors;
-
 		},
 
-		findElements : function() {
+		findElements: function() {
+			selector.each( function() {
+				var $this = $(this), bgImage = $this.css( 'background-image' );
 
-			this.selector.each(function() {
-
-				var bgimg = $(this).css( 'background-image' );
-
-				if ( bgimg.indexOf( 'data:image/svg+xml;base64' ) != -1 ) {
-					svgPainter.elements.push( $(this) );
+				if ( bgImage && bgImage.indexOf( 'data:image/svg+xml;base64' ) != -1 ) {
+					elements.push( $this );
 				}
-
 			});
-
 		},
 
-		paint : function() {
+		paint: function() {
+			if ( ! colorscheme ) {
+				return;
+			}
 
 			// loop through all elements
-			$.each( this.elements, function( index, $element ) {
-
+			$.each( elements, function( index, $element ) {
 				var $menuitem = $element.parent().parent();
 
 				if ( $menuitem.hasClass( 'current' ) || $menuitem.hasClass( 'wp-has-current-submenu' ) ) {
-
 					// paint icon in 'current' color
-					svgPainter.paintElement( $element, svgPainter.colorscheme.icons.current );
-
+					svgPainter.paintElement( $element, 'current' );
 				} else {
-
 					// paint icon in base color
-					svgPainter.paintElement( $element, svgPainter.colorscheme.icons.base );
+					svgPainter.paintElement( $element, 'base' );
 
 					// set hover callbacks
 					$menuitem.hover(
-						function() { svgPainter.paintElement( $element, svgPainter.colorscheme.icons.focus ); },
-						function() { svgPainter.paintElement( $element, svgPainter.colorscheme.icons.base ); }
+						function() { svgPainter.paintElement( $element, 'focus' ); },
+						function() { svgPainter.paintElement( $element, 'base' ); }
 					);
-
 				}
-
 			});
-
 		},
 
-		paintElement : function( $element, color ) {
+		paintElement: function( $element, colorType ) {
+			var xml, encoded, color;
 
+			if ( ! colorType || ! colorscheme.hasOwnProperty( colorType ) ) {
+				return;
+			}
+
+			color = colorscheme[ colorType ];
+
 			// only accept hex colors: #101 or #101010
-			if ( ! color.match( /^(#[0-9a-f]{3}|#[0-9a-f]{6})$/i ) )
+			if ( ! color.match( /^(#[0-9a-f]{3}|#[0-9a-f]{6})$/i ) ) {
 				return;
+			}
 
-			var xml = $element.data( 'mp6-svg-' + color ),
-				base64;
+			xml = $element.data( 'mp6-svg-' + color );
 
 			if ( ! xml ) {
+				encoded = $element.css( 'background-image' ).match( /.+data:image\/svg\+xml;base64,(.+?)['"]\)/ );
 
-				base64 = $element.css( 'background-image' ).match( /.+data:image\/svg\+xml;base64,(.+)\)/ );
-
-				if ( ! base64 )
+				if ( ! encoded || ! encoded[1] ) {
 					return;
+				}
 
-				try {
-					xml = window.atob( base64[1] );
-				} catch ( e ) {
-					xml = $.base64.atob( base64[1] );
+				if ( 'atob' in window ) {
+					xml = window.atob( encoded[1] );
+				} else {
+					xml = base64.atob( encoded[1] );
 				}
 
 				// replace `fill` attributes
@@ -112,97 +191,17 @@
 				// replace `fill` properties in `<style>` tags
 				xml = xml.replace( /fill:.*?;/g, 'fill: ' + color + ';');
 
-				try {
+				if ( 'btoa' in window ) {
 					xml = window.btoa( xml );
-				} catch ( e ) {
-					xml = $.base64.btoa( xml );
+				} else {
+					xml = base64.btoa( xml );
 				}
 
 				$element.data( 'mp6-svg-' + color, xml );
-
 			}
 
 			$element.attr( 'style', 'background-image: url("data:image/svg+xml;base64,' + xml + '") !important;' );
-
 		}
-
 	};
 
 })( jQuery, window, document );
-
-/*!
- * Customized for MP6
- *
- * Based on jquery.base64.js 0.0.3 - https://github.com/yckart/jquery.base64.js
- *
- * Based upon: https://gist.github.com/Yaffle/1284012
- *
- * Copyright (c) 2012 Yannick Albert (http://yckart.com)
- * Licensed under the MIT license
- * http://www.opensource.org/licenses/mit-license.php
- **/
-;(function($) {
-
-    var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
-        a256 = '',
-        r64 = [256],
-        r256 = [256],
-        i = 0,
-		c, Plugin;
-
-    while(i < 256) {
-        c = String.fromCharCode(i);
-        a256 += c;
-        r256[i] = i;
-        r64[i] = b64.indexOf(c);
-        ++i;
-    }
-
-    function code(s, discard, alpha, beta, w1, w2) {
-        s = String(s);
-        var buffer = 0,
-            i = 0,
-            length = s.length,
-            result = '',
-            bitsInBuffer = 0,
-			tmp;
-
-        while(i < length) {
-            c = s.charCodeAt(i);
-            c = c < 256 ? alpha[c] : -1;
-
-            buffer = (buffer << w1) + c;
-            bitsInBuffer += w1;
-
-            while(bitsInBuffer >= w2) {
-                bitsInBuffer -= w2;
-                tmp = buffer >> bitsInBuffer;
-                result += beta.charAt(tmp);
-                buffer ^= tmp << bitsInBuffer;
-            }
-            ++i;
-        }
-        if(!discard && bitsInBuffer > 0) result += beta.charAt(buffer << (w2 - bitsInBuffer));
-        return result;
-    }
-
-    Plugin = $.base64 = function(dir, input, encode) {
-            return input ? Plugin[dir](input, encode) : dir ? null : this;
-        };
-
-    $.base64.btoa = function(plain) {
-        plain = code(plain, false, r256, b64, 8, 6);
-        return plain + '===='.slice((plain.length % 4) || 4);
-    };
-
-    $.base64.atob = function(coded) {
-        coded = coded.replace(/[^A-Za-z0-9\+\/\=]/g, '');
-        coded = String(coded).split('=');
-        var i = coded.length;
-        do {--i;
-            coded[i] = code(coded[i], true, r64, a256, 6, 8);
-        } while (i > 0);
-        coded = coded.join('');
-        return coded;
-    };
-}(jQuery));
Index: src/wp-includes/script-loader.php
===================================================================
--- src/wp-includes/script-loader.php	(revision 26548)
+++ src/wp-includes/script-loader.php	(working copy)
@@ -392,8 +392,6 @@
 	$scripts->add( 'media-editor', "/wp-includes/js/media-editor$suffix.js", array( 'shortcode', 'media-views' ), false, 1 );
 	$scripts->add( 'mce-view', "/wp-includes/js/mce-view$suffix.js", array( 'shortcode', 'media-models' ), false, 1 );
 
-	$scripts->add( 'svg-painter', '/wp-includes/js/svg-painter.js' );
-
 	if ( is_admin() ) {
 		$scripts->add( 'admin-tags', "/wp-admin/js/tags$suffix.js", array('jquery', 'wp-ajax-response'), false, 1 );
 		did_action( 'init' ) && $scripts->localize( 'admin-tags', 'tagsl10n', array(
@@ -516,6 +514,8 @@
 		$scripts->add( 'custom-header', "/wp-admin/js/custom-header.js", array( 'jquery-masonry' ), false, 1 );
 		$scripts->add( 'custom-background', "/wp-admin/js/custom-background$suffix.js", array( 'wp-color-picker', 'media-views' ), false, 1 );
 		$scripts->add( 'media-gallery', "/wp-admin/js/media-gallery$suffix.js", array('jquery'), false, 1 );
+
+		$scripts->add( 'svg-painter', '/wp-includes/js/svg-painter.js', array( 'jquery' ), false, 1 );
 	}
 }
 
