Index: wp-admin/includes/image-edit.php
===================================================================
--- wp-admin/includes/image-edit.php	(revision 19743)
+++ wp-admin/includes/image-edit.php	(working copy)
@@ -492,6 +492,8 @@
 }
 
 function wp_save_image($post_id) {
+	global $_wp_additional_image_sizes;
+	
 	$return = new stdClass;
 	$success = $delete = $scaled = $nocrop = false;
 	$post = get_post($post_id);
@@ -628,9 +630,23 @@
 				if ( $tag )
 					$backup_sizes[$tag] = $meta['sizes'][$size];
 			}
+			
+			$crop = false;
+			if (!$nocrop) {
+				if ( isset( $_wp_additional_image_sizes[$size]['crop'] ) )
+					$crop = $_wp_additional_image_sizes[$size]['crop'];
+				else $crop = get_option("{$size}_crop");
+			}
+			
+			if ( isset( $_wp_additional_image_sizes[$size]['width'] ) )
+				$width = $_wp_additional_image_sizes[$size]['width'];
+			else $width = get_option("{$size}_size_w");
+			
+			if ( isset( $_wp_additional_image_sizes[$size]['height'] ) )
+				$height = $_wp_additional_image_sizes[$size]['height'];
+			else $height = get_option("{$size}_size_h");
 
-			$crop = $nocrop ? false : get_option("{$size}_crop");
-			$resized = image_make_intermediate_size($new_path, get_option("{$size}_size_w"), get_option("{$size}_size_h"), $crop );
+			$resized = image_make_intermediate_size($new_path, $width, $height, $crop );
 
 			if ( $resized )
 				$meta['sizes'][$size] = $resized;
