Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 23505)
+++ wp-includes/post.php	(working copy)
@@ -2397,6 +2397,8 @@
 	wp_add_post_meta($post_id,'_wp_trash_meta_time', time());
 
 	$post['post_status'] = 'trash';
+	$post['slashed'] = false;
+
 	wp_insert_post($post);
 
 	wp_trash_post_comments($post_id);
@@ -2432,6 +2434,8 @@
 	delete_post_meta($post_id, '_wp_trash_meta_status');
 	delete_post_meta($post_id, '_wp_trash_meta_time');
 
+	$post['slashed'] = false;
+
 	wp_insert_post($post);
 
 	wp_untrash_post_comments($post_id);
@@ -2670,6 +2674,7 @@
  *     'guid'          - Global Unique ID for referencing the attachment.
  *     'post_content_filtered' - Post content filtered.
  *     'post_excerpt'  - Post excerpt.
+ *     'slashed'       - Whether the passed data is slashed or not. The default is true.
  *
  * @since 1.0.0
  * @uses $wpdb
@@ -2691,12 +2696,15 @@
 		'ping_status' => get_option('default_ping_status'), 'post_parent' => 0,
 		'menu_order' => 0, 'to_ping' =>  '', 'pinged' => '', 'post_password' => '',
 		'guid' => '', 'post_content_filtered' => '', 'post_excerpt' => '', 'import_id' => 0,
-		'post_content' => '', 'post_title' => '');
+		'post_content' => '', 'post_title' => '', 'slashed' => true );
 
 	$postarr = wp_parse_args($postarr, $defaults);
 
 	unset( $postarr[ 'filter' ] );
 
+	if ( $postarr['slashed'] )
+		wp_unslash( $postarr );
+
 	$postarr = sanitize_post($postarr, 'db');
 
 	// export array as variables
@@ -2981,6 +2989,8 @@
 		$postarr['post_date_gmt'] = '';
 	}
 
+	$postarr['slashed'] = false;
+
 	if ($postarr['post_type'] == 'attachment')
 		return wp_insert_attachment($postarr);
 
@@ -3901,6 +3911,7 @@
  *     'guid'          - Global Unique ID for referencing the attachment.
  *     'post_content_filtered' - Attachment post content filtered.
  *     'post_excerpt'  - Attachment excerpt.
+ *     'slashed'       - Whether the passed data is slashed or not. The default is true.
  *
  * @since 2.0.0
  * @uses $wpdb
@@ -3919,9 +3930,14 @@
 	$defaults = array('post_status' => 'inherit', 'post_type' => 'post', 'post_author' => $user_ID,
 		'ping_status' => get_option('default_ping_status'), 'post_parent' => 0,
 		'menu_order' => 0, 'to_ping' =>  '', 'pinged' => '', 'post_password' => '',
-		'guid' => '', 'post_content_filtered' => '', 'post_excerpt' => '', 'import_id' => 0, 'context' => '');
+		'guid' => '', 'post_content_filtered' => '', 'post_excerpt' => '', 'import_id' => 0, 'context' => '',
+		'slashed' => true );
 
 	$object = wp_parse_args($object, $defaults);
+
+	if ( $postarr['slashed'] )
+		wp_unslash( $postarr );
+
 	if ( !empty($parent) )
 		$object['post_parent'] = $parent;
 
Index: wp-includes/revision.php
===================================================================
--- wp-includes/revision.php	(revision 23505)
+++ wp-includes/revision.php	(working copy)
@@ -241,6 +241,7 @@
 		return new WP_Error( 'post_type', __( 'Cannot create a revision of a revision' ) );
 
 	$post = _wp_post_revision_fields( $post, $autosave );
+	$post['slashed'] = false;
 
 	$revision_id = wp_insert_post( $post );
 	if ( is_wp_error($revision_id) )
Index: wp-includes/class-wp-xmlrpc-server.php
===================================================================
--- wp-includes/class-wp-xmlrpc-server.php	(revision 23505)
+++ wp-includes/class-wp-xmlrpc-server.php	(working copy)
@@ -1202,6 +1202,7 @@
 		$this->attach_uploads( $post_ID, $post_data['post_content'] );
 
 		$post_data = apply_filters( 'xmlrpc_wp_insert_post_data', $post_data, $content_struct );
+		$post_data['slashed'] = false;
 
 		$post_ID = $update ? wp_update_post( $post_data, true ) : wp_insert_post( $post_data, true );
 		if ( is_wp_error( $post_ID ) )
@@ -3770,6 +3771,7 @@
 		$post_date_gmt = current_time('mysql', 1);
 
 		$post_data = compact('blog_ID', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_category', 'post_status');
+		$post_data['slashed'] = false;
 
 		$post_ID = wp_insert_post($post_data);
 		if ( is_wp_error( $post_ID ) )
@@ -4169,6 +4171,8 @@
 		if ( isset( $content_struct['wp_post_format'] ) )
 			set_post_format( $post_ID, $content_struct['wp_post_format'] );
 
+		$postdata['slashed'] = false;
+
 		$post_ID = wp_insert_post( $postdata, true );
 		if ( is_wp_error( $post_ID ) )
 			return new IXR_Error(500, $post_ID->get_error_message());
Index: wp-includes/nav-menu.php
===================================================================
--- wp-includes/nav-menu.php	(revision 23505)
+++ wp-includes/nav-menu.php	(working copy)
@@ -357,6 +357,7 @@
 	if ( ! $update ) {
 		$post['ID'] = 0;
 		$post['post_status'] = 'publish' == $args['menu-item-status'] ? 'publish' : 'draft';
+		$post_data['slashed'] = false;
 		$menu_item_db_id = wp_insert_post( $post );
 		if ( ! $menu_item_db_id	|| is_wp_error( $menu_item_db_id ) )
 			return $menu_item_db_id;
Index: wp-mail.php
===================================================================
--- wp-mail.php	(revision 23505)
+++ wp-mail.php	(working copy)
@@ -202,6 +202,7 @@
 	$post_category = array(get_option('default_email_category'));
 
 	$post_data = compact('post_content','post_title','post_date','post_date_gmt','post_author','post_category', 'post_status');
+	$post_data['slashed'] = false;
 
 	$post_ID = wp_insert_post($post_data);
 	if ( is_wp_error( $post_ID ) )
Index: wp-admin/includes/post.php
===================================================================
--- wp-admin/includes/post.php	(revision 23505)
+++ wp-admin/includes/post.php	(working copy)
@@ -440,7 +440,7 @@
 		$post_excerpt = esc_html( wp_unslash( $_REQUEST['excerpt'] ));
 
 	if ( $create_in_db ) {
-		$post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
+		$post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft', 'slashed' => false ) );
 		$post = get_post( $post_id );
 		if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) )
 			set_post_format( $post, get_option( 'default_post_format' ) );
@@ -566,7 +566,9 @@
 	}
 
 	// Create the post.
-	$post_ID = wp_insert_post( wp_unslash( $_POST ) );
+	$post = wp_unslash( $_POST );
+	$post['slashed'] = false;
+	$post_ID = wp_insert_post( $post );
 	if ( is_wp_error( $post_ID ) )
 		return $post_ID;
 
