diff --git a/core/lib/Drupal/Core/Database/Query/PagerSelectExtender.php b/core/lib/Drupal/Core/Database/Query/PagerSelectExtender.php
index 0668fa5..630b35f 100644
--- a/core/lib/Drupal/Core/Database/Query/PagerSelectExtender.php
+++ b/core/lib/Drupal/Core/Database/Query/PagerSelectExtender.php
@@ -20,13 +20,6 @@
 class PagerSelectExtender extends SelectExtender {
 
   /**
-   * The highest element we've autogenerated so far.
-   *
-   * @var int
-   */
-  static $maxElement = 0;
-
-  /**
    * The number of elements per page to allow.
    *
    * @var int
@@ -87,14 +80,20 @@ public function execute() {
   /**
    * Ensure that there is an element associated with this query.
    * If an element was not specified previously, then the value of the
-   * $maxElement counter is taken, after which the counter is incremented.
+   * $pager_page_array counter is taken, after which the counter is incremented.
    *
    * After running this method, access $this->element to get the element for this
    * query.
    */
   protected function ensureElement() {
     if (!isset($this->element)) {
-      $this->element = self::$maxElement++;
+      global $pager_page_array;
+      $this->element = 0;
+      // If there are already other pagers defined get the highest pager key and
+      // increment it.
+      if (is_array($pager_page_array)) {
+        $this->element = max(array_keys($pager_page_array)) + 1;
+      }
     }
   }
 
@@ -163,9 +162,12 @@ public function limit($limit = 10) {
    * @param $element
    */
   public function element($element) {
+    global $pager_page_array;
+    $max_element = (is_array($pager_page_array)) ? max(array_keys($pager_page_array)) : 0;
     $this->element = $element;
-    if ($element >= self::$maxElement) {
-      self::$maxElement = $element + 1;
+    if ($element >= $max_element) {
+      // Register the pager in the global pager handling.
+      pager_default_initialize(0, 1, $element);
     }
     return $this;
   }
diff --git a/core/lib/Drupal/Core/Entity/Query/QueryBase.php b/core/lib/Drupal/Core/Entity/Query/QueryBase.php
index d22dbac..d8b5060 100644
--- a/core/lib/Drupal/Core/Entity/Query/QueryBase.php
+++ b/core/lib/Drupal/Core/Entity/Query/QueryBase.php
@@ -178,13 +178,22 @@ public function age($age = FIELD_LOAD_CURRENT) {
    * Implements Drupal\Core\Entity\Query\QueryInterface::pager().
    */
   public function pager($limit = 10, $element = NULL) {
-    // Even when not using SQL, storing the element PagerSelectExtender is as
-    // good as anywhere else.
+    global $pager_page_array;
+    $max_element = (is_array($pager_page_array)) ? max(array_keys($pager_page_array)) : 0;
+
+    // If no pager element is defined ensure the element is a new pager,
+    // otherwise ensure the element is registered in the global pager handling.
     if (!isset($element)) {
-      $element = PagerSelectExtender::$maxElement++;
+      $element = 0;
+      // If there are already other pagers defined get the highest pager key and
+      // increment it.
+      if (is_array($pager_page_array)) {
+        $element = max(array_keys($pager_page_array)) + 1;
+      }
     }
-    elseif ($element >= PagerSelectExtender::$maxElement) {
-      PagerSelectExtender::$maxElement = $element + 1;
+    elseif ($element >= $max_element) {
+      // Register the pager in the global pager handling.
+      pager_default_initialize(0, 1, $element);
     }
 
     $this->pager = array(
diff --git a/core/modules/system/lib/Drupal/system/Tests/Database/SelectPagerDefaultTest.php b/core/modules/system/lib/Drupal/system/Tests/Database/SelectPagerDefaultTest.php
index a8c3daf..e5970bc 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Database/SelectPagerDefaultTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Database/SelectPagerDefaultTest.php
@@ -169,5 +169,24 @@ function testElementNumbers() {
     $this->assertEqual($name, 'John', 'Pager query #3 with a generated element ID returned the correct results.');
 
     unset($_GET['page']);
+
+    // Ensure the query extender doesn't interfere with the global pager.
+    // Load the global pager array and manually add a new pager. The query
+    // extender has to respect the manually added pager and increment further.
+    global $pager_total_items;
+    $max_key = max(array_keys($pager_total_items));
+    $max_key++;
+    pager_default_initialize(333, 1, $max_key);
+    $pager_count = count($pager_total_items);
+
+    $name = db_select('test', 't')
+      ->extend('Drupal\Core\Database\Query\PagerSelectExtender')
+      ->fields('t', array('name'))
+      ->orderBy('age')
+      ->limit(1)
+      ->execute()
+      ->fetchField();
+    $this->assertEqual(count($pager_total_items), ($pager_count + 1), t('Pager query #4 registered its own pager.'));
+    $this->assertEqual($pager_total_items[$max_key], 333, t('Pager query #4 did not touch other defined pagers.'));
   }
 }
