diff --git a/core/includes/pager.inc b/core/includes/pager.inc
index cef12ac..0f8aadb 100644
--- a/core/includes/pager.inc
+++ b/core/includes/pager.inc
@@ -429,8 +429,11 @@ function pager_query_add_page(array $query, $element, $index) {
   if ($new_page = implode(',', pager_load_array($page_new[$element], $element, explode(',', $page)))) {
     $query['page'] = $new_page;
   }
-  if ($query_pager = pager_get_query_parameters()) {
-    $query = array_merge($query, $query_pager);
+  // Merge the pager query parameters specified in variables, with any
+  // parameters coming from the current request. In case of collision,
+  // parameters specified in variables take precedence.
+  if ($current_request_query = pager_get_query_parameters()) {
+    $query = array_merge($current_request_query, $query);
   }
   return $query;
 }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Pager/PagerQueryParametersTest.php b/core/modules/system/lib/Drupal/system/Tests/Pager/PagerQueryParametersTest.php
new file mode 100644
index 0000000..0946440
--- /dev/null
+++ b/core/modules/system/lib/Drupal/system/Tests/Pager/PagerQueryParametersTest.php
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\system\Tests\Pager\PagerQueryParametersTest.
+ */
+
+namespace Drupal\system\Tests\Pager;
+
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Tests pager query parameters.
+ */
+class PagerQueryParametersTest extends WebTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array(
+    'dblog',
+    'pager_test',
+  );
+
+  protected $profile = 'testing';
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Pager query parameters functionality',
+      'description' => 'Tests pager query parameters.',
+      'group' => 'Pager',
+    );
+  }
+
+  function setUp() {
+    parent::setUp();
+
+    // Insert 300 log messages.
+    for ($i = 0; $i < 300; $i++) {
+      watchdog('pager_test', $this->randomString(), NULL, WATCHDOG_DEBUG);
+    }
+
+    $this->admin_user = $this->drupalCreateUser(array(
+      'access site reports',
+    ));
+    $this->drupalLogin($this->admin_user);
+  }
+
+  /**
+   * Test proper functioning of the query parameters.
+   */
+  function testPagerQueryParameters() {
+    // First page.
+    $this->drupalGet('pager-test/query-parameters');
+    $current_page = 0;
+    $this->assertText(t('Pager calls: 0'), 'Initial call to pager shows 0 calls.');
+
+    // Go to last page, the count of pager calls need to go to 1.
+    $elements = $this->xpath('//li[contains(@class, :class)]/a', array(':class' => 'pager-last'));
+    $this->drupalGet($GLOBALS['base_root'] . $elements[0]['href'], array('external' => TRUE));
+    $this->assertText(t('Pager calls: 1'), 'First link call to pager shows 1 calls.');
+
+    // Go back to first page, the count of pager calls need to go to 2.
+    $elements = $this->xpath('//li[contains(@class, :class)]/a', array(':class' => 'pager-first'));
+    $this->drupalGet($GLOBALS['base_root'] . $elements[0]['href'], array('external' => TRUE));
+    $this->assertText(t('Pager calls: 2'), 'Second link call to pager shows 2 calls.');
+  }
+
+}
diff --git a/core/modules/system/tests/modules/pager_test/lib/Drupal/pager_test/Controller/PagerTestController.php b/core/modules/system/tests/modules/pager_test/lib/Drupal/pager_test/Controller/PagerTestController.php
new file mode 100644
index 0000000..a66344a
--- /dev/null
+++ b/core/modules/system/tests/modules/pager_test/lib/Drupal/pager_test/Controller/PagerTestController.php
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\pager_test\Controller\PagerTestController.
+ */
+
+namespace Drupal\pager_test\Controller;
+
+/**
+ * Controller routine for testing the pager.
+ */
+class PagerTestController {
+
+  /**
+   * Returns a pager with 'parameters' variable.
+   *
+   * The 'pager_calls' parameter counts the calls to the pager, subsequent
+   * to the initial call.
+   */
+  public function queryParameters() {
+
+    // Example query.
+    $header_0 = array(
+      array('data' => 'wid'),
+      array('data' => 'type'),
+      array('data' => 'timestamp'),
+    );
+    $query_0 = db_select('watchdog', 'd')->extend('Drupal\Core\Database\Query\PagerSelectExtender')->element(0);
+    $query_0->fields('d', array('wid', 'type', 'timestamp'));
+    $result_0 = $query_0
+      ->limit(5)
+      ->orderBy('d.wid')
+      ->execute();
+    $rows_0 = array();
+    foreach ($result_0 as $row) {
+      $rows_0[] = array('data' => (array) $row);
+    }
+    $build['pager_table_0'] = array(
+      '#theme' => 'table',
+      '#header' => $header_0,
+      '#rows' => $rows_0,
+      '#empty' => t("There are no watchdog records found in the db"),
+    );
+
+    // Counter of calls to the current pager.
+    $query_params = pager_get_query_parameters();
+    $pager_calls = isset($query_params['pager_calls']) ? ($query_params['pager_calls'] ? $query_params['pager_calls'] : 0) : 0;
+    $build['l_pager_pager_0'] = array('#markup' => t('Pager calls: @pager_calls', array('@pager_calls' => $pager_calls)));
+
+    // Pager.
+    $build['pager_pager_0'] = array(
+      '#theme' => 'pager',
+      '#element' => 0,
+      '#parameters' => array(
+        'pager_calls' => ++$pager_calls,
+      ),
+    );
+
+    return $build;
+  }
+}
diff --git a/core/modules/system/tests/modules/pager_test/pager_test.info.yml b/core/modules/system/tests/modules/pager_test/pager_test.info.yml
new file mode 100644
index 0000000..00db3c9
--- /dev/null
+++ b/core/modules/system/tests/modules/pager_test/pager_test.info.yml
@@ -0,0 +1,7 @@
+name: 'Pager Test'
+type: module
+description: 'Support module for Pager tests.'
+package: Testing
+version: VERSION
+core: 8.x
+hidden: true
diff --git a/core/modules/system/tests/modules/pager_test/pager_test.module b/core/modules/system/tests/modules/pager_test/pager_test.module
new file mode 100644
index 0000000..bfffe7d
--- /dev/null
+++ b/core/modules/system/tests/modules/pager_test/pager_test.module
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * @file
+ * Helper module for Pager tests.
+ */
+
+/**
+ * Implements hook_menu().
+ */
+function pager_test_menu() {
+  $items['pager-test/query-parameters'] = array(
+    'title' => 'pager_test_query_parameters',
+    'route_name' => 'pager_test_query_parameters',
+    'type' => MENU_CALLBACK,
+  );
+  return $items;
+}
diff --git a/core/modules/system/tests/modules/pager_test/pager_test.routing.yml b/core/modules/system/tests/modules/pager_test/pager_test.routing.yml
new file mode 100644
index 0000000..fa553d3
--- /dev/null
+++ b/core/modules/system/tests/modules/pager_test/pager_test.routing.yml
@@ -0,0 +1,6 @@
+pager_test_query_parameters:
+  pattern: '/pager-test/query-parameters'
+  defaults:
+    _content: '\Drupal\pager_test\Controller\PagerTestController::queryParameters'
+  requirements:
+    _access: 'TRUE'
