diff --git src/wp-includes/js/media-models.js src/wp-includes/js/media-models.js
index 2e406d7..0405b56 100644
--- src/wp-includes/js/media-models.js
+++ src/wp-includes/js/media-models.js
@@ -320,6 +320,13 @@ window.wp = window.wp || {};
 			}, data ) ).done( function( resp, status, xhr ) {
 				model.set( model.parse( resp, xhr ), options );
 			});
+		},
+		crop: function() {
+			return wp.ajax.post( 'custom-header-crop', {
+				nonce: this.get('nonces').edit,
+				id: this.get('id'),
+				cropDetails: this.get('cropDetails')
+			} );
 		}
 	}, {
 		/**
diff --git src/wp-includes/js/media-views.js src/wp-includes/js/media-views.js
index 4c2114c..56684c4 100644
--- src/wp-includes/js/media-views.js
+++ src/wp-includes/js/media-views.js
@@ -1367,13 +1367,13 @@
 
 						click: function() {
 							var self = this,
-								selection = this.controller.state().get('selection').first();
+								selection = new media.model.Attachment(this.controller.state().get('selection').first().attributes);
 
 							selection.set({cropDetails: this.controller.state().imgSelect.getSelection()});
 
 							this.$el.text(l10n.cropping);
 							this.$el.attr('disabled', true);
-							this.controller.state().doCrop( selection ).done( function( croppedImage ) {
+							selection.crop().done( function( croppedImage ) {
 								self.controller.trigger('cropped', croppedImage );
 								self.controller.close();
 							});
@@ -1400,14 +1400,6 @@
 			}
 
 			this.frame.toolbar.set( new wp.media.view.Toolbar(toolbarOptions) );
-		},
-
-		doCrop: function( attachment ) {
-			return wp.ajax.post( 'custom-header-crop', {
-				nonce: attachment.get('nonces').edit,
-				id: attachment.get('id'),
-				cropDetails: attachment.get('cropDetails')
-			} );
 		}
 	});
 
