Index: src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php
===================================================================
--- src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php	(revision 48491)
+++ src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php	(working copy)
@@ -541,7 +541,7 @@
 		}
 
 		// Create new attachment post.
-		$attachment_post = array(
+		$new_attachment_post = array(
 			'post_mime_type' => $saved['mime-type'],
 			'guid'           => $uploads['url'] . "/$filename",
 			'post_title'     => $filename,
@@ -548,8 +548,16 @@
 			'post_content'   => '',
 		);
 
-		$new_attachment_id = wp_insert_attachment( wp_slash( $attachment_post ), $saved['path'], 0, true );
+		// Copy post_content and post_excerps from the edited image's attachment post.
+		$attachment_post = get_post( $attachment_id );
 
+		if ( $attachment_post ) {
+			$new_attachment_post['post_content'] = $attachment_post->post_content;
+			$new_attachment_post['post_excerpt'] = $attachment_post->post_excerpt;
+		}
+
+		$new_attachment_id = wp_insert_attachment( wp_slash( $new_attachment_post ), $saved['path'], 0, true );
+
 		if ( is_wp_error( $new_attachment_id ) ) {
 			if ( 'db_update_error' === $new_attachment_id->get_error_code() ) {
 				$new_attachment_id->add_data( array( 'status' => 500 ) );
@@ -564,16 +572,13 @@
 		$new_image_meta = wp_generate_attachment_metadata( $new_attachment_id, $saved['path'] );
 
 		// Copy the EXIF metadata from the original attachment if not generated for the edited image.
-		if ( ! empty( $image_meta['image_meta'] ) ) {
-			$empty_image_meta = true;
-
-			if ( isset( $new_image_meta['image_meta'] ) && is_array( $new_image_meta['image_meta'] ) ) {
-				$empty_image_meta = empty( array_filter( array_values( $new_image_meta['image_meta'] ) ) );
+		if ( isset( $image_meta['image_meta'] ) && isset( $new_image_meta['image_meta'] ) && is_array( $new_image_meta['image_meta'] ) ) {
+			// Merge but skip empty values.
+			foreach( (array) $image_meta['image_meta'] as $key => $value ) {
+				if ( empty( $new_image_meta['image_meta'][ $key ] ) && ! empty( $value ) ) {
+					$new_image_meta['image_meta'][ $key ] = $value;
+				}
 			}
-
-			if ( $empty_image_meta ) {
-				$new_image_meta['image_meta'] = $image_meta['image_meta'];
-			}
 		}
 
 		// Reset orientation. At this point the image is edited and orientation is correct.
