diff --git a/wp-admin/includes/image-edit.php b/wp-admin/includes/image-edit.php
index efa9865..c026876 100644
--- a/wp-admin/includes/image-edit.php
+++ b/wp-admin/includes/image-edit.php
@@ -171,6 +171,10 @@ function wp_image_editor($post_id, $msg = false) {
 		<label class="imgedit-label">
 		<input type="radio" name="imgedit-target-<?php echo $post_id; ?>" value="nothumb" />
 		<?php _e('All sizes except thumbnail'); ?></label>
+
+		<label class="imgedit-label">
+		<input type="radio" name="imgedit-target-<?php echo $post_id; ?>" value="new" />
+		<?php _e('A newly created image'); ?></label>
 	</fieldset>
 	</div>
 	</div>
@@ -792,6 +796,11 @@ function wp_save_image( $post_id ) {
 		}
 	}
 
+	if ( 'new' == $target ) {
+		$original_post_id = $post_id;
+		$post_id = NULL;
+	}
+
 	// Save the full-size file, also needed to create sub-sizes.
 	if ( !wp_save_image_file($new_path, $img, $post->post_mime_type, $post_id) ) {
 		$return->error = esc_js( __('Unable to save the image.') );
@@ -830,6 +839,31 @@ function wp_save_image( $post_id ) {
 	} elseif ( 'thumbnail' == $target ) {
 		$sizes = array( 'thumbnail' );
 		$success = $delete = $nocrop = true;
+	} elseif ( 'new' == $target ) {
+		$size = $img->get_size();
+		$meta['width'] = $size['width']; // cropped and saved as a copy
+		$meta['height'] = $size['height'];
+
+		$new_post = (array)$post;
+		unset( $new_post['ID'], $new_post['post_date'], $new_post['post_date_gmt'], $new_post['post_modified'], $new_post['post_modified_gmt'] );
+		$new_post['post_title'] = preg_match('/\.[a-z]{3}$/', $new_post['post_title']) ? preg_replace('/(\.[a-z]{3})/', '-media-copy\1', $new_post['post_title']) : $new_post['post_title'] . '-mediacopy';
+
+		$wp_upload_dir = wp_upload_dir();
+		$new_post['guid'] = $wp_upload_dir['url'] . '/' . basename( $new_path );
+		$post_id = wp_insert_attachment( $new_post, $new_path, 0, TRUE );
+		if ( is_wp_error( $post_id ) ) {
+			$return->error = esc_js( __('Unable to create a new atachment.') );
+			return $return;
+		}
+		$return->refresh = TRUE;
+		$return->debug = sprintf( __( 'New attachment created: %d.'), $post_id );
+		$success = true;
+
+		update_attached_file( $post_id, $new_path );
+		update_post_meta( $post_id, '_wp_attachment_derive_from', $original_post_id );
+
+		$sizes = get_intermediate_image_sizes();
+		$delete = $nocrop = false;
 	}
 
 	/*
@@ -886,7 +920,7 @@ function wp_save_image( $post_id ) {
 		wp_update_attachment_metadata( $post_id, $meta );
 		update_post_meta( $post_id, '_wp_attachment_backup_sizes', $backup_sizes);
 
-		if ( $target == 'thumbnail' || $target == 'all' || $target == 'full' ) {
+		if ( $target == 'thumbnail' || $target == 'all' || $target == 'full' || $target == 'new' ) {
 			// Check if it's an image edit from attachment edit screen
 			if ( ! empty( $_REQUEST['context'] ) && 'edit-attachment' == $_REQUEST['context'] ) {
 				$thumb_url = wp_get_attachment_image_src( $post_id, array( 900, 600 ), true );
diff --git a/wp-admin/js/image-edit.js b/wp-admin/js/image-edit.js
index 14af25e..7c23631 100644
--- a/wp-admin/js/image-edit.js
+++ b/wp-admin/js/image-edit.js
@@ -496,6 +496,7 @@  function(r) {
 			}
 
 			if ( self._view ) {
+				if ( ret.refresh ) { /* ToDo: refresh media view when going back. */ }
 				self._view.save();
 			} else {
 				imageEdit.close(postid);
