Index: wp-admin/includes/misc.php
===================================================================
--- wp-admin/includes/misc.php	(revision 21256)
+++ wp-admin/includes/misc.php	(working copy)
@@ -328,15 +328,15 @@
 		if ( !preg_match( '/^[a-z_-]+$/', $option ) )
 			return;
 
-		$option = str_replace('-', '_', $option);
-
 		$map_option = $option;
 		$type = str_replace('edit_', '', $map_option);
 		$type = str_replace('_per_page', '', $type);
-		if ( in_array($type, get_post_types()) )
+		if ( in_array( $type, get_taxonomies() ) )
+			$map_option = 'edit_tags_per_page';
+		elseif ( in_array( $type, get_post_types() ) )
 			$map_option = 'edit_per_page';
-		if ( in_array( $type, get_taxonomies()) )
-			$map_option = 'edit_tags_per_page';
+		else
+			$option = str_replace('-', '_', $option);
 
 		switch ( $map_option ) {
 			case 'edit_per_page':
Index: wp-admin/edit-tags.php
===================================================================
--- wp-admin/edit-tags.php	(revision 21256)
+++ wp-admin/edit-tags.php	(working copy)
@@ -36,7 +36,7 @@
 	$submenu_file = "edit-tags.php?taxonomy=$taxonomy";
 }
 
-add_screen_option( 'per_page', array('label' => $title, 'default' => 20, 'option' => 'edit_' . $tax->name . '_per_page') );
+add_screen_option( 'per_page', array( 'label' => $title, 'default' => 20, 'option' => 'edit_' . $tax->name . '_per_page' ) );
 
 switch ( $wp_list_table->current_action() ) {
 
Index: wp-admin/edit.php
===================================================================
--- wp-admin/edit.php	(revision 21256)
+++ wp-admin/edit.php	(working copy)
@@ -215,7 +215,7 @@
 	);
 }
 
-add_screen_option( 'per_page', array('label' => $title, 'default' => 20) );
+add_screen_option( 'per_page', array( 'label' => $title, 'default' => 20, 'option' => 'edit_' . $post_type . '_per_page' ) );
 
 require_once('./admin-header.php');
 ?>
