diff --git a/core/includes/pager.inc b/core/includes/pager.inc
index c060d0e..fda89e5 100644
--- a/core/includes/pager.inc
+++ b/core/includes/pager.inc
@@ -5,6 +5,10 @@
  * Functions to aid in presenting database results as a set of pages.
  */
 
+/**
+ * The amount of items per page to show in pagers.
+ */
+define('PAGER_ITEMS', 50);
 
 /**
  * Query extender for pager queries.
@@ -26,7 +30,7 @@ class PagerDefault extends SelectQueryExtender {
    *
    * @var int
    */
-  protected $limit = 10;
+  protected $limit = PAGER_ITEMS;
 
   /**
    * The unique ID of this pager on this page.
@@ -65,10 +69,14 @@ class PagerDefault extends SelectQueryExtender {
       return NULL;
     }
 
-    // A NULL limit is the "kill switch" for pager queries.
-    if (empty($this->limit)) {
+    // A NULL or FALSE limit is the "kill switch" for pager queries.
+    if (!is_numeric($this->limit)) {
       return;
     }
+    // A zero limit means we use the default limit.
+    else if (empty($this->limit)) {
+      $this->limit = variable_get('pager_items', PAGER_ITEMS);
+    }
     $this->ensureElement();
 
     $total_items = $this->getCountQuery()->execute()->fetchField();
@@ -128,13 +136,14 @@ class PagerDefault extends SelectQueryExtender {
   /**
    * Specify the maximum number of elements per page for this query.
    *
-   * The default if not specified is 10 items per page.
+   * The default if not specified is PAGER_ITEMS items per page.
    *
    * @param $limit
-   *   An integer specifying the number of elements per page.  If passed a false
-   *   value (FALSE, 0, NULL), the pager is disabled.
+   *   An integer specifying the number of elements per page. If passed a 0
+   *   the configured default number of items is used. If passed a NULL or
+   *   FALSE, the pager is disabled.
    */
-  public function limit($limit = 10) {
+  public function limit($limit = 0) {
     $this->limit = $limit;
     return $this;
   }
@@ -426,7 +435,6 @@ function theme_pager($variables) {
   }
 }
 
-
 /**
  * @defgroup pagerpieces Pager pieces
  * @{
diff --git a/core/modules/node/node.admin.inc b/core/modules/node/node.admin.inc
index 9578417..c8c239d 100644
--- a/core/modules/node/node.admin.inc
+++ b/core/modules/node/node.admin.inc
@@ -470,8 +470,8 @@ function node_admin_nodes() {
   }
   $nids = $query
     ->fields('n',array('nid'))
-    ->limit(50)
     ->orderByHeader($header)
+    ->limit()
     ->execute()
     ->fetchCol();
   $nodes = node_load_multiple($nids);
diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc
index d28ecfb..5dbcbe6 100644
--- a/core/modules/system/system.admin.inc
+++ b/core/modules/system/system.admin.inc
@@ -1616,6 +1616,44 @@ function system_run_cron_submit($form, &$form_state) {
 }
 
 /**
+ * Form builder; Pager form.
+ *
+ * @ingroup forms
+ * @see system_settings_form()
+ */
+function system_pager_settings() {
+  $form['description'] = array(
+    '#markup' => '<p>' . t('The pager breaks long lists of items into multiple pages.') . '</p>',
+  );
+  $form['pager_items'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Items per page'),
+    '#size' => 4,
+    '#maxlength' => 3,
+    '#description' => t('Enter the number of items the pager should show on a single page. If you set this too high, large listings might slow down your site.'),
+    '#default_value' => variable_get('pager_items', PAGER_ITEMS),
+  );
+  return system_settings_form($form);
+}
+
+/**
+ * Validate handler for the pager settings form.
+ */
+function system_pager_settings_validate($form, &$form_state) {
+  if (!is_numeric($form_state['values']['pager_items'])) {
+    form_set_error('pager_items', t('You must enter a positive whole number between 10 and 1000.'));
+  }
+  else if (intval($form_state['values']['pager_items']) < 10) {
+    form_set_error('pager_items', t('You must enter a positive number between 10 and 1000.'));
+  }
+  else if (intval($form_state['values']['pager_items']) >= 1000) {
+    form_set_error('pager_items', t('You must enter a positive number between 10 and 1000.'));
+  }
+  else if (intval($form_state['values']['pager_items']) >= 200) {
+    drupal_set_message(t('Setting the default too high can adversely affect performance on listing pages.'), 'warning');
+  }
+}
+/**
  * Form builder; Configure error reporting settings.
  *
  * @ingroup forms
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index 38c3f55..6063593 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -1004,6 +1004,15 @@ function system_menu() {
     'file' => 'system.admin.inc',
     'weight' => 20,
   );
+  $items['admin/config/system/pager'] = array(
+    'title' => t('Pager'),
+    'description' => t('Configure the amount of items per page shown in generated lists.'),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_pager_settings'),
+    'access arguments' => array('administer site configuration'),
+    'file' => 'system.admin.inc',
+    'weight' => 20,
+  );
   // Additional categories
   $items['admin/config/user-interface'] = array(
     'title' => 'User interface',
diff --git a/core/modules/user/user.admin.inc b/core/modules/user/user.admin.inc
index f7d4552..87c9ac4 100644
--- a/core/modules/user/user.admin.inc
+++ b/core/modules/user/user.admin.inc
@@ -161,7 +161,7 @@ function user_admin_account() {
   $query = $query->extend('PagerDefault')->extend('TableSort');
   $query
     ->fields('u', array('uid', 'name', 'status', 'created', 'access'))
-    ->limit(50)
+    ->limit()
     ->orderByHeader($header)
     ->setCountQuery($count_query);
   $result = $query->execute();
