Index: wp-admin/includes/image-edit.php
===================================================================
--- wp-admin/includes/image-edit.php	(revision 49)
+++ wp-admin/includes/image-edit.php	(working copy)
@@ -173,16 +173,20 @@
 		<strong><?php _e('Apply changes to:'); ?></strong><br />
 
 		<label class="imgedit-label">
-		<input type="radio" name="imgedit-target-<?php echo $post_id; ?>" value="all" checked="checked" />
-		<?php _e('All image sizes'); ?></label>
+		<input type="checkbox" name="imgedit-target-<?php echo $post_id; ?>" value="thumbnail" checked="checked" />
+		<?php _e('Thumbnail'); ?></label>
 
 		<label class="imgedit-label">
-		<input type="radio" name="imgedit-target-<?php echo $post_id; ?>" value="thumbnail" />
-		<?php _e('Thumbnail'); ?></label>
+		<input type="checkbox" name="imgedit-target-<?php echo $post_id; ?>" value="medium" checked="checked" />
+		<?php _e('Medium'); ?></label>
 
 		<label class="imgedit-label">
-		<input type="radio" name="imgedit-target-<?php echo $post_id; ?>" value="nothumb" />
-		<?php _e('All sizes except thumbnail'); ?></label>
+		<input type="checkbox" name="imgedit-target-<?php echo $post_id; ?>" value="large" checked="checked" />
+		<?php _e('Large'); ?></label>
+
+		<label class="imgedit-label">
+		<input type="checkbox" name="imgedit-target-<?php echo $post_id; ?>" value="full" checked="checked" />
+		<?php _e('Full size'); ?></label>
 	</p>
 	</div>
 
@@ -505,7 +509,7 @@
 
 	$fwidth = !empty($_REQUEST['fwidth']) ? intval($_REQUEST['fwidth']) : 0;
 	$fheight = !empty($_REQUEST['fheight']) ? intval($_REQUEST['fheight']) : 0;
-	$target = !empty($_REQUEST['target']) ? preg_replace('/[^a-z0-9_-]+/i', '', $_REQUEST['target']) : '';
+	$target = !empty($_REQUEST['target']) ? preg_replace('/[^a-z0-9_-]+/i', '', $_REQUEST['target']) : array();
 	$scale = !empty($_REQUEST['do']) && 'scale' == $_REQUEST['do'];
 
 	if ( $scale && $fwidth > 0 && $fheight > 0 ) {
@@ -557,7 +561,7 @@
 	if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE &&
 		isset($backup_sizes['full-orig']) && $backup_sizes['full-orig']['file'] != $path_parts['basename'] ) {
 
-		if ( 'thumbnail' == $target )
+		if ( in_array('thumbnail', $target) )
 			$new_path = "{$path_parts['dirname']}/{$filename}-temp.{$path_parts['extension']}";
 		else
 			$new_path = $path;
@@ -580,7 +584,7 @@
 		return $return;
 	}
 
-	if ( 'nothumb' == $target || 'all' == $target || 'full' == $target || $scaled ) {
+	if ( in_array('full', $target) || $scaled ) {
 		$tag = false;
 		if ( isset($backup_sizes['full-orig']) ) {
 			if ( ( !defined('IMAGE_EDIT_OVERWRITE') || !IMAGE_EDIT_OVERWRITE ) && $backup_sizes['full-orig']['file'] != $path_parts['basename'] )
@@ -601,16 +605,14 @@
 		list ( $uwidth, $uheight ) = wp_shrink_dimensions($meta['width'], $meta['height']);
 		$meta['hwstring_small'] = "height='$uheight' width='$uwidth'";
 
-		if ( $success && ('nothumb' == $target || 'all' == $target) ) {
-			$sizes = apply_filters( 'intermediate_image_sizes', array('large', 'medium', 'thumbnail') );
-			if ( 'nothumb' == $target )
-				$sizes = array_diff( $sizes, array('thumbnail') );
+		if ( $success ) {
+			$sizes = $target;
 		}
 
 		$return->fw = $meta['width'];
 		$return->fh = $meta['height'];
-	} elseif ( 'thumbnail' == $target ) {
-		$sizes = array( 'thumbnail' );
+	} else {
+		$sizes = $target;
 		$success = $delete = $nocrop = true;
 	}
 
@@ -643,7 +645,7 @@
 		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 ( in_array('thumbnail', $target) || sizeof($target) == 4 || in_array('full', $target) ) {
 			$file_url = wp_get_attachment_url($post_id);
 			if ( $thumb = $meta['sizes']['thumbnail'] )
 				$return->thumbnail = path_join( dirname($file_url), $thumb['file'] );
Index: wp-admin/js/image-edit.dev.js
===================================================================
--- wp-admin/js/image-edit.dev.js	(revision 49)
+++ wp-admin/js/image-edit.dev.js	(working copy)
@@ -64,7 +64,11 @@
 	},
 
 	getTarget : function(postid) {
-		return $('input[name=imgedit-target-' + postid + ']:checked', '#imgedit-save-target-' + postid).val() || 'full';
+		var target = new Array();
+		$('input[name=imgedit-target-' + postid + ']:checked').each(function() {
+				target.push(jQuery(this).val());
+		});
+		return target;
 	},
 
 	scaleChanged : function(postid, x) {
@@ -241,7 +245,7 @@
 			'_ajax_nonce': nonce,
 			'postid': postid,
 			'history': history,
-			'target': target,
+			'target[]': target,
 			'do': 'save'
 		};
 
