diff --git wp-admin/includes/ajax-actions.php wp-admin/includes/ajax-actions.php
index 7a01af9..22982c9 100644
--- wp-admin/includes/ajax-actions.php
+++ wp-admin/includes/ajax-actions.php
@@ -1512,7 +1512,9 @@ function wp_ajax_inline_save() {
 		if ( ! current_user_can( 'edit_page', $post_ID ) )
 			wp_die( __( 'You are not allowed to edit this page.' ) );
 	} else {
-		if ( ! current_user_can( 'edit_post', $post_ID ) )
+		$post = get_post( $post_ID );
+		$post_type_object = get_post_type_object( $post->post_type );
+		if ( ! current_user_can( $post_type_object->cap->edit_posts, $post_ID ) )
 			wp_die( __( 'You are not allowed to edit this post.' ) );
 	}
 
diff --git wp-admin/includes/class-wp-posts-list-table.php wp-admin/includes/class-wp-posts-list-table.php
index e626039..95148cc 100644
--- wp-admin/includes/class-wp-posts-list-table.php
+++ wp-admin/includes/class-wp-posts-list-table.php
@@ -645,7 +645,7 @@ class WP_Posts_List_Table extends WP_List_Table {
 		$edit_link = get_edit_post_link( $post->ID );
 		$title = _draft_or_post_title();
 		$post_type_object = get_post_type_object( $post->post_type );
-		$can_edit_post = current_user_can( 'edit_post', $post->ID );
+		$can_edit_post = current_user_can( $post_type_object->cap->edit_posts, $post->ID );
 
 		$classes = 'iedit author-' . ( get_current_user_id() == $post->post_author ? 'self' : 'other' );
 
diff --git wp-admin/includes/media.php wp-admin/includes/media.php
index 7581196..f88e00b 100644
--- wp-admin/includes/media.php
+++ wp-admin/includes/media.php
@@ -3039,15 +3039,16 @@ function wp_media_attach_action( $parent_id, $action = 'attach' ) {
 	if ( ! $parent_id ) {
 		return;
 	}
-
-	if ( ! current_user_can( 'edit_post', $parent_id ) ) {
+	$post = get_post( $post_ID );
+	$post_type_object = get_post_type_object( $post->post_type );
+	if ( ! current_user_can( $post_type_object->cap->edit_posts, $parent_id ) ) {
 		wp_die( __( 'You are not allowed to edit this post.' ) );
 	}
 	$ids = array();
 	foreach ( (array) $_REQUEST['media'] as $att_id ) {
 		$att_id = (int) $att_id;
 
-		if ( ! current_user_can( 'edit_post', $att_id ) ) {
+		if ( ! current_user_can( $post_type_object->cap->edit_posts, $att_id ) ) {
 			continue;
 		}
 
diff --git wp-admin/includes/post.php wp-admin/includes/post.php
index 9356ace..c4592fe 100644
--- wp-admin/includes/post.php
+++ wp-admin/includes/post.php
@@ -28,7 +28,7 @@ function _wp_translate_postdata( $update = false, $post_data = null ) {
 
 	$ptype = get_post_type_object( $post_data['post_type'] );
 
-	if ( $update && ! current_user_can( 'edit_post', $post_data['ID'] ) ) {
+	if ( $update && ! current_user_can( $ptype->cap->edit_posts, $post_data['ID'] ) ) {
 		if ( 'page' == $post_data['post_type'] )
 			return new WP_Error( 'edit_others_pages', __( 'You are not allowed to edit pages as this user.' ) );
 		else
@@ -199,7 +199,7 @@ function edit_post( $post_data = null ) {
 	}
 
 	$ptype = get_post_type_object($post_data['post_type']);
-	if ( !current_user_can( 'edit_post', $post_ID ) ) {
+	if ( !current_user_can( $ptype->cap->edit_posts, $post_ID ) ) {
 		if ( 'page' == $post_data['post_type'] )
 			wp_die( __('You are not allowed to edit this page.' ));
 		else
@@ -1660,8 +1660,8 @@ function post_preview() {
 	if ( ! $post = get_post( $post_ID ) ) {
 		wp_die( __( 'You are not allowed to edit this post.' ) );
 	}
-
-	if ( ! current_user_can( 'edit_post', $post->ID ) ) {
+	$post_type_object = get_post_type_object( $post->post_type );
+	if ( ! current_user_can( $post_type_object->cap->edit_posts, $post->ID ) ) {
 		wp_die( __( 'You are not allowed to edit this post.' ) );
 	}
 
diff --git wp-admin/post.php wp-admin/post.php
index 0c38b56..3bbb936 100644
--- wp-admin/post.php
+++ wp-admin/post.php
@@ -152,7 +152,7 @@ case 'edit':
 	if ( ! $post_type_object )
 		wp_die( __( 'Unknown post type.' ) );
 
-	if ( ! current_user_can( 'edit_post', $post_id ) )
+	if ( ! current_user_can( $post_type_object->cap->edit_posts, $post_id ) )
 		wp_die( __( 'You are not allowed to edit this item.' ) );
 
 	if ( 'trash' == $post->post_status )
diff --git wp-includes/class-wp-xmlrpc-server.php wp-includes/class-wp-xmlrpc-server.php
index 898a322..46544d7 100644
--- wp-includes/class-wp-xmlrpc-server.php
+++ wp-includes/class-wp-xmlrpc-server.php
@@ -1174,7 +1174,7 @@ class wp_xmlrpc_server extends IXR_Server {
 		if ( $update ) {
 			if ( ! get_post( $post_data['ID'] ) )
 				return new IXR_Error( 401, __( 'Invalid post ID.' ) );
-			if ( ! current_user_can( 'edit_post', $post_data['ID'] ) )
+			if ( ! current_user_can( $post_type->cap->edit_posts, $post_data['ID'] ) )
 				return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this post.' ) );
 			if ( $post_data['post_type'] != get_post_type( $post_data['ID'] ) )
 				return new IXR_Error( 401, __( 'The post type may not be changed.' ) );
diff --git wp-includes/link-template.php wp-includes/link-template.php
index 1f90199..bfe384b 100644
--- wp-includes/link-template.php
+++ wp-includes/link-template.php
@@ -1181,7 +1181,7 @@ function get_edit_post_link( $id = 0, $context = 'display' ) {
 	if ( !$post_type_object )
 		return;
 
-	if ( !current_user_can( 'edit_post', $post->ID ) )
+	if ( !current_user_can( $post_type_object->cap->edit_posts, $post->ID ) )
 		return;
 
 	/**
