Index: wp-includes/revision.php
===================================================================
--- wp-includes/revision.php	(revision 23890)
+++ wp-includes/revision.php	(working copy)
@@ -134,12 +134,16 @@
 
 			// Check whether revisioned meta fields have changed.
 			foreach ( _wp_post_revision_meta_keys() as $meta_key ) {
-				if ( get_post_meta( $post->ID, $meta_key ) != get_post_meta( $last_revision->ID, $meta_key ) ) {
+				if ( get_post_meta( $post->ID, $meta_key, true ) != get_post_meta( $last_revision->ID, $meta_key, true ) ) {
 					$post_has_changed = true;
 					break;
 				}
 			}
 
+			// Check whether the post format has changed
+			if ( get_post_format( $post->ID ) != get_post_meta( $last_revision->ID, '_revision_post_format', true ) )
+				$post_has_changed = true;
+
 			//don't save revision if post unchanged
 			if( ! $post_has_changed )
 				return;
@@ -280,16 +284,18 @@
 
 	// Save revisioned meta fields.
 	foreach ( _wp_post_revision_meta_keys() as $meta_key ) {
-		$meta_values = get_post_meta( $post_id, $meta_key );
-		if ( false === $meta_values )
+		$meta_value = get_post_meta( $post_id, $meta_key, true );
+		if ( empty( $meta_value ) )
 			continue;
 
 		// Use the underlying add_metadata vs add_post_meta to make sure
 		// metadata is added to the revision post and not its parent.
-		foreach ( $meta_values as $meta_value )
-			add_metadata( 'post', $revision_id, $meta_key, $meta_value );
+		add_metadata( 'post', $revision_id, $meta_key, $meta_value );
 	}
 
+	// Save the post format
+	add_metadata( 'post', $revision_id, '_revision_post_format', get_post_format( $post_id ) );
+
 	return $revision_id;
 }
 
@@ -367,14 +373,17 @@
 	// Restore revisioned meta fields.
 	foreach ( _wp_post_revision_meta_keys() as $meta_key ) {
 		delete_post_meta( $update['ID'], $meta_key );
-		$meta_values = get_post_meta( $revision['ID'], $meta_key );
-		if ( false === $meta_values )
+		$meta_value = get_post_meta( $revision['ID'], $meta_key, true );
+		if ( empty( $meta_value ) )
 			continue;
 
-		foreach ( $meta_values as $meta_value )
-			add_post_meta( $update['ID'], $meta_key, $meta_value );
+		add_post_meta( $update['ID'], $meta_key, $meta_value );
 	}
 
+	// Restore post format
+	$post_format = get_post_meta( $revision['ID'], '_revision_post_format', true );
+	set_post_format( $update['ID'], $post_format );
+
 	$post_id = wp_update_post( $update );
 	if ( is_wp_error( $post_id ) )
 		return $post_id;
@@ -505,6 +514,7 @@
 	$post->post_excerpt = $preview->post_excerpt;
 
 	add_filter( 'get_post_metadata', '_wp_preview_meta_filter', 10, 4 );
+	add_filter( 'get_the_terms', '_wp_preview_terms_filter', 10, 3 );
 
 	return $post;
 }
@@ -541,6 +551,30 @@
 	return get_post_meta( $preview->ID, $meta_key, $single );
 }
 
+/**
+ * Filters terms lookup to get the post format saved with the preview revision.
+ *
+ * @since 2.6
+ * @access private
+ */
+function _wp_preview_terms_filter( $terms, $post_id, $taxonomy ) {
+	$post = get_post();
+
+	if ( $post->ID != $post_id || 'post_format' != $taxonomy || 'revision' == $post->post_type )
+		return $terms;
+
+	$preview = wp_get_post_autosave( $post->ID );
+	if ( ! is_object( $preview ) )
+		return $terms;
+
+	$post_format = get_post_meta( $preview->ID, '_revision_post_format', true );
+	$term = get_term_by( 'slug', 'post-format-' . sanitize_key( $post_format ), 'post_format' );
+	if ( $term )
+		$terms = array( $term );
+
+	return $terms;
+}
+
 function _wp_get_post_revision_version( $revision ) {
 	if ( is_object( $revision ) )
 		$revision = get_object_vars( $revision );
Index: wp-admin/includes/post.php
===================================================================
--- wp-admin/includes/post.php	(revision 23890)
+++ wp-admin/includes/post.php	(working copy)
@@ -1290,6 +1290,10 @@
 			add_metadata( 'post', $new_autosave['ID'], $meta_key, $_POST[ $meta_key ] );
 		}
 
+		// Save the post format
+		if ( isset( $_POST['post_format'] ) )
+			update_metadata( 'post', $new_autosave['ID'], '_revision_post_format', $_POST['post_format'] );
+
 		return wp_update_post( $new_autosave );
 	}
 
