Index: wp-admin/includes/misc.php
===================================================================
--- wp-admin/includes/misc.php	(revision 19735)
+++ wp-admin/includes/misc.php	(working copy)
@@ -347,6 +347,7 @@
 			case 'upload_per_page':
 			case 'edit_tags_per_page':
 			case 'plugins_per_page':
+			case 'themes_per_page':
 			// Network admin
 			case 'sites_network_per_page':
 			case 'users_network_per_page':
Index: wp-admin/includes/class-wp-themes-list-table.php
===================================================================
--- wp-admin/includes/class-wp-themes-list-table.php	(revision 19735)
+++ wp-admin/includes/class-wp-themes-list-table.php	(working copy)
@@ -47,7 +47,7 @@
 		unset( $themes[$ct->name] );
 		uksort( $themes, "strnatcasecmp" );
 
-		$per_page = 24;
+		$per_page = $this->get_items_per_page( str_replace( '-', '_', get_current_screen()->id . '_per_page' ), 24 );;
 		$page = $this->get_pagenum();
 
 		$start = ( $page - 1 ) * $per_page;
Index: wp-admin/themes.php
===================================================================
--- wp-admin/themes.php	(revision 19735)
+++ wp-admin/themes.php	(working copy)
@@ -46,6 +46,8 @@
 	'content' => $help_manage,
 ) );
 
+add_screen_option( 'per_page', array( 'label' => _x( 'Themes', 'themes per page (screen options)' ), 'default' => 24 ) );
+
 if ( current_user_can( 'install_themes' ) ) {
 	if ( is_multisite() ) {
 		$help_install = '<p>' . __('Installing themes on Multisite can only be done from the Network Admin section.') . '</p>';
