diff --git a/core/includes/pager.inc b/core/includes/pager.inc
index 4c497ba..951cbcd 100644
--- a/core/includes/pager.inc
+++ b/core/includes/pager.inc
@@ -6,6 +6,7 @@
  */
 
 use Drupal\Core\Template\Attribute;
+use Drupal\Core\Database\Query\PagerSelectExtender;
 
 /**
  * Returns the current page being requested for display within a pager.
@@ -118,6 +119,11 @@ function pager_default_initialize($total, $limit, $element = 0) {
 
   $page = pager_find_page($element);
 
+  // Ensure the query extender counter doesn't interfere.
+  if (PagerSelectExtender::$maxElement <= $element) {
+    PagerSelectExtender::$maxElement = $element + 1;
+  }
+
   // We calculate the total of pages as ceil(items / limit).
   $pager_total_items[$element] = $total;
   $pager_total[$element] = ceil($pager_total_items[$element] / $limit);
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..b9df45e 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Database/SelectPagerDefaultTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Database/SelectPagerDefaultTest.php
@@ -170,4 +170,31 @@ function testElementNumbers() {
 
     unset($_GET['page']);
   }
+
+  /**
+   * Test if the global pager and the query extender work properly together.
+   *
+   * @see \Drupal\system\Tests\Pager\PagerTest::testQueryExtender()
+   */
+  function testGlobalPager() {
+    // Ensure the query extender doesn't interfere with the global pager.
+    // Load the global pager array and manually add a new pager. After executing
+    // the query a new pager has to be available and the manually added pager
+    // has to have the same values set.
+    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), 'Pager query #4 registered its own pager.');
+    $this->assertEqual($pager_total_items[$max_key], 333, 'Pager query #4 did not touch other defined pagers.');
+  }
 }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Pager/PagerTest.php b/core/modules/system/lib/Drupal/system/Tests/Pager/PagerTest.php
index bb27fa0..de004f4 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Pager/PagerTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Pager/PagerTest.php
@@ -9,6 +9,7 @@
 
 use Drupal\simpletest\WebTestBase;
 use SimpleXMLElement;
+use Drupal\Core\Database\Query\PagerSelectExtender;
 
 /**
  * Tests pager functionality.
@@ -69,6 +70,32 @@ function testActiveClass() {
   }
 
   /**
+   * Test if the global pager and the query extender work properly together.
+   *
+   * @see \Drupal\system\Tests\Database\SelectPagerDefaultTest::testGlobalPager()
+   */
+  function testPagerQueryExtender() {
+    global $pager_total_items;
+
+    // Test an equal value.
+    $before = PagerSelectExtender::$maxElement;
+    pager_default_initialize(333, 1, PagerSelectExtender::$maxElement);
+    $this->assertEqual(PagerSelectExtender::$maxElement, $before + 1, 'Pager keeps query extender counter in sync.');
+
+    // Test a bigger step.
+    $before = $step = PagerSelectExtender::$maxElement;
+    $new_max_key = max(array_keys($pager_total_items)) + 10;
+    pager_default_initialize(444, 1, $new_max_key);
+    $this->assertEqual(PagerSelectExtender::$maxElement, $new_max_key + 1, 'Pager keeps query extender counter in sync on bigger steps.');
+
+    // Test a lower element number.
+    $before = PagerSelectExtender::$maxElement;
+    $max_key = max(array_keys($pager_total_items));
+    pager_default_initialize(555, 1, $max_key - 1);
+    $this->assertEqual(PagerSelectExtender::$maxElement, $before, 'Pager increments query extender counter only if necessary.');
+  }
+
+  /**
    * Asserts pager items and links.
    *
    * @param int $current_page
