diff --git src/wp-includes/css/media-views.css src/wp-includes/css/media-views.css
index f3e03ff..3765201 100644
--- src/wp-includes/css/media-views.css
+++ src/wp-includes/css/media-views.css
@@ -47,6 +47,17 @@
 	color: #fff;
 }
 
+.media-frame a.button-error {
+	color: white;
+	background-color: red;
+	border-color: #CC0000;
+}
+
+.media-frame a.button-error:hover {
+	background-color: #CC0000;
+	border-color: #CC0000;
+}
+
 .media-frame input[type="text"],
 .media-frame input[type="password"],
 .media-frame input[type="number"],
diff --git src/wp-includes/js/media-views.js src/wp-includes/js/media-views.js
index 6f73bfb..bf2e94e 100644
--- src/wp-includes/js/media-views.js
+++ src/wp-includes/js/media-views.js
@@ -1331,6 +1331,10 @@
 							selection.crop(cropDetails).done( function( croppedImage ) {
 								self.controller.trigger('cropped', croppedImage );
 								self.controller.close();
+							}).fail( function() {
+								self.$el.attr('disabled', false);
+								self.$el.text(l10n.errorRetry);
+								self.$el.addClass('button-error');
 							});
 						}
 					}
diff --git src/wp-includes/media.php src/wp-includes/media.php
index fcaf89c..ff43b60 100644
--- src/wp-includes/media.php
+++ src/wp-includes/media.php
@@ -2475,6 +2475,7 @@ function wp_enqueue_media( $args = array() ) {
 		 */
 		'selected'    => __( '%d selected' ),
 		'dragInfo'    => __( 'Drag and drop to reorder images.' ),
+		'errorRetry'	=> __( 'Error! Retry?' ),
 
 		// Upload
 		'uploadFilesTitle'  => __( 'Upload Files' ),
