Index: src/wp-admin/includes/post.php
===================================================================
--- src/wp-admin/includes/post.php	(revision 41098)
+++ src/wp-admin/includes/post.php	(working copy)
@@ -564,6 +564,11 @@
 			continue;
 		}
 
+		if ( isset( $post_data['post_format'] ) ) {
+			set_post_format( $post_ID, $post_data['post_format'] );
+			unset( $post_data['tax_input']['post_format'] );
+		}
+
 		$updated[] = wp_update_post( $post_data );
 
 		if ( isset( $post_data['sticky'] ) && current_user_can( $ptype->cap->edit_others_posts ) ) {
@@ -572,9 +577,6 @@
 			else
 				unstick_post( $post_ID );
 		}
-
-		if ( isset( $post_data['post_format'] ) )
-			set_post_format( $post_ID, $post_data['post_format'] );
 	}
 
 	return array( 'updated' => $updated, 'skipped' => $skipped, 'locked' => $locked );
Index: tests/phpunit/tests/admin/includesPost.php
===================================================================
--- tests/phpunit/tests/admin/includesPost.php	(revision 41098)
+++ tests/phpunit/tests/admin/includesPost.php	(working copy)
@@ -207,7 +207,7 @@
 	/**
 	 * @ticket 27792
 	 */
-	function test_bulk_edit_posts_stomping() {
+	public function test_bulk_edit_posts_stomping() {
 		wp_set_current_user( self::$admin_id );
 
 		$post1 = self::factory()->post->create( array(
@@ -245,6 +245,31 @@
 	}
 
 	/**
+	 * @ticket 41396
+	 */
+	public function test_bulk_edit_posts_should_set_post_format_before_wp_update_post_runs() {
+		wp_set_current_user( self::$admin_id );
+
+		$request = array(
+			'post_format' => 'aside',
+			'_status'     => -1,
+			'post'        => array( self::$post_id ),
+		);
+
+		add_action( 'save_post', array( $this, 'check_post_format' ) );
+
+		bulk_edit_posts( $request );
+
+		remove_action( 'save_post', array( $this, 'check_post_format' ) );
+	}
+
+	public function check_post_format( $post_id ) {
+		if ( self::$post_id === $post_id ) {
+			$this->assertEquals( 'aside', get_post_format( $post_id ) );
+		}
+	}
+
+	/**
 	 * @ticket 38293
 	 */
 	public function test_user_cant_delete_protected_meta() {
