diff --git src/wp-admin/js/customize-controls.js src/wp-admin/js/customize-controls.js
index f514cf7..5f170bc 100644
--- src/wp-admin/js/customize-controls.js
+++ src/wp-admin/js/customize-controls.js
@@ -2346,6 +2346,10 @@
 				api.HeaderTool.UploadsList,
 				api.HeaderTool.DefaultsList
 			]);
+
+			//Add extra params to doCrop args for customizer
+			wp.media.controller.Cropper.prototype.defaults.doCropArgs.wp_customize = 'on';
+			wp.media.controller.Cropper.prototype.defaults.doCropArgs.theme = api.settings.theme.stylesheet;
 		},
 
 		/**
diff --git src/wp-includes/js/media-views.js src/wp-includes/js/media-views.js
index f9c5555..015ec23 100644
--- src/wp-includes/js/media-views.js
+++ src/wp-includes/js/media-views.js
@@ -282,8 +282,10 @@ Cropper = wp.media.controller.State.extend({
 		toolbar:     'crop',
 		content:     'crop',
 		router:      false,
+		canSkipCrop: false,
 
-		canSkipCrop: false
+		// Default doCrop Ajax arguments to allow the Customizer (for example) to inject state.
+		doCropArgs: {}
 	},
 
 	activate: function() {
@@ -367,11 +369,15 @@ Cropper = wp.media.controller.State.extend({
 	},
 
 	doCrop: function( attachment ) {
-		return wp.ajax.post( 'custom-header-crop', {
-			nonce: attachment.get('nonces').edit,
-			id: attachment.get('id'),
-			cropDetails: attachment.get('cropDetails')
-		} );
+		return wp.ajax.post( 'custom-header-crop', _.extend(
+			{},
+			this.defaults.doCropArgs,
+			{
+				nonce: attachment.get( 'nonces' ).edit,
+				id: attachment.get( 'id' ),
+				cropDetails: attachment.get( 'cropDetails' )
+			}
+		) );
 	}
 });
 
