Index: wp-admin/includes/post.php
===================================================================
--- wp-admin/includes/post.php	(revision 15448)
+++ wp-admin/includes/post.php	(working copy)
@@ -895,9 +895,10 @@
 	$posts_per_page = (int) get_user_option( $per_page );
 	if ( empty( $posts_per_page ) || $posts_per_page < 1 )
 		$posts_per_page = 20;
+
+	$per_page = apply_filters( 'edit_posts_per_page', $per_page, $post_type );
 	$posts_per_page = apply_filters( $per_page, $posts_per_page );
 
-
 	$query = compact('post_type', 'post_status', 'perm', 'order', 'orderby', 'posts_per_page');
 
 	// Hierarchical types require special args.
Index: wp-admin/edit.php
===================================================================
--- wp-admin/edit.php	(revision 15448)
+++ wp-admin/edit.php	(working copy)
@@ -43,13 +43,14 @@
 $pagenum = isset( $_GET['paged'] ) ? absint( $_GET['paged'] ) : 0;
 if ( empty($pagenum) )
 	$pagenum = 1;
-$per_page = 'edit_' . $post_type . '_per_page';
-$per_page = (int) get_user_option( $per_page );
+$edit_per_page = 'edit_' . $post_type . '_per_page';
+$per_page = (int) get_user_option( $edit_per_page );
 if ( empty( $per_page ) || $per_page < 1 )
 	$per_page = 20;
-// @todo filter based on type
-$per_page = apply_filters( 'edit_posts_per_page', $per_page );
 
+$per_page = apply_filters( 'edit_posts_per_page', $per_page, $post_type );
+$per_page = apply_filters( $edit_per_page, $per_page );
+
 // Handle bulk actions
 if ( isset($_GET['doaction']) || isset($_GET['doaction2']) || isset($_GET['delete_all']) || isset($_GET['delete_all2']) || isset($_GET['bulk_edit']) ) {
 	check_admin_referer('bulk-posts');
