diff --git a/jquery_update.install b/jquery_update.install
index 3633ddd..98da3b7 100644
--- a/jquery_update.install
+++ b/jquery_update.install
@@ -47,3 +47,21 @@ function jquery_update_update_7000() {
   // Restore the default version of jQuery.
   variable_del('jquery_update_jquery_version');
 }
+
+/**
+ * Keep a previously configured jquery version for the admin theme.
+ * @see https://www.drupal.org/node/1969244
+ */
+function jquery_update_update_7001() {
+  $admin_theme_key = variable_get('admin_theme', FALSE);
+  $admin_version = variable_get('jquery_update_jquery_admin_version', FALSE);
+  if (!$admin_theme_key || !$admin_version) {
+    return;
+  }
+  $theme_settings = variable_get('theme_' . $admin_theme_key . '_settings', FALSE);
+  if (!isset($theme_settings['jquery_update_jquery_version'])) {
+    $theme_settings['jquery_update_jquery_version'] = $admin_version;
+    variable_set('theme_' . $admin_theme_key . '_settings', $theme_settings);
+    variable_del('jquery_update_jquery_admin_version');
+  }
+}
diff --git a/jquery_update.module b/jquery_update.module
index bc26069..6ca74e1 100644
--- a/jquery_update.module
+++ b/jquery_update.module
@@ -87,17 +87,14 @@ function jquery_update_library_alter(&$javascript, $module) {
     $cdn = variable_get('jquery_update_jquery_cdn', 'none');
 
     // Replace jQuery with the alternative version.
-    $admin_version = variable_get('jquery_update_jquery_admin_version', '');
-
-    if (!empty($admin_version) && path_is_admin(current_path())) {
-      if (version_compare($version, $admin_version, '!=')) {
-        $version = $admin_version;
-      }
+    $theme_version = theme_get_setting('jquery_update_jquery_version');
+    if ($theme_version && version_compare($version, $theme_version, '!=')) {
+      $version = $theme_version;
     }
     // If the ajax version is set then that one always win.
     if (!empty($_POST['ajax_page_state']['jquery_version'])) {
       $ajax_version = $_POST['ajax_page_state']['jquery_version'];
-      if (in_array($ajax_version, array('default', '1.5', '1.6', '1.7', '1.8', '1.9', '1.10'))) {
+      if ($ajax_version == 'default' || in_array($ajax_version, jquery_update_get_versions())) {
         $version = $ajax_version;
       }
     }
@@ -170,36 +167,61 @@ function jquery_update_settings_form() {
   $form['version_options'] = array(
     '#type' => 'fieldset',
     '#title' => t('Version options'),
+    '#description' => t('You can override the jQuery version on a per-theme basis on each themes settings page.'),
   );
 
+  $default_version = variable_get('jquery_update_jquery_version', '1.10');
   $form['version_options']['jquery_update_jquery_version'] = array(
     '#type' => 'select',
     '#title' => t('Default jQuery Version'),
-    '#options' => array(
-      'default' => t('Default (provided by Drupal)'),
-      '1.5' => '1.5',
-      '1.7' => '1.7',
-      '1.8' => '1.8',
-      '1.9' => '1.9',
-      '1.10' => '1.10',
-    ),
-    '#default_value' => variable_get('jquery_update_jquery_version', '1.10'),
+    '#options' => array_merge(array('default' => t('Default (provided by Drupal)')), jquery_update_get_versions()),
+    '#default_value' => $default_version,
     '#description' => t('Select which jQuery version to use by default.'),
   );
 
-  $form['version_options']['jquery_update_jquery_admin_version'] = array(
-    '#type' => 'select',
-    '#title' => t('Alternate jQuery version for administrative pages'),
-    '#options' => array(
-      '' => t('Default jQuery Version'),
-      'default' => t('Default (provided by Drupal)'),
-      '1.5' => '1.5',
-      '1.7' => '1.7',
-      '1.8' => '1.8',
-      '1.10' => '1.10',
-    ),
-    '#default_value' => variable_get('jquery_update_jquery_admin_version', ''),
-    '#description' => t('Optionally select a different version of jQuery to use on administrative pages.'),
+  $themes = list_themes();
+  $header = array(t('Theme'), t('Status'), t('jQuery version'), '');
+  $rows = array();
+  $themes_collapsed = TRUE;
+  // Go through all themes.
+  foreach ($themes as $theme_name => $theme) {
+    // Skip disabled themes, but only if they are not configured as admin
+    // theme. This is an inconsitency in drupal core, that you can select a
+    // disabled theme as admin theme.
+    if (!$theme->status && variable_get('admin_theme', FALSE) != $theme_name) {
+      continue;
+    }
+    // Retrieve the version jQuery for this theme.
+    $theme_version = theme_get_setting('jquery_update_jquery_version', $theme_name);
+    if (empty($theme_version)) {
+      $theme_version = $default_version;
+    }
+    // Decide whether the override table should be shown.
+    if ($theme_version != $default_version) {
+      $themes_collapsed = FALSE;
+    }
+    $uri = 'admin/appearance/settings/' . $theme_name;
+    $rows[] = array(
+      $theme->info['name'],
+      $theme_version != $default_version ? t('Overridden') : t('Default'),
+      $theme_version,
+      l(t('Change'), $uri, array(
+        'fragment' => 'edit-jquery-update-version',
+        'query' => drupal_get_destination(),
+      )),
+    );
+  }
+
+  $form['version_options']['themes'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Theme specific versions'),
+    '#collapsible' => TRUE,
+    '#collapsed' => $themes_collapsed,
+  );
+  $form['version_options']['themes']['overrides'] = array(
+    '#theme' => 'table',
+    '#header' => $header,
+    '#rows' => $rows,
   );
 
   $form['jquery_update_compression_type'] = array(
@@ -240,6 +262,47 @@ function jquery_update_settings_form() {
 }
 
 /**
+ * Implements hook_form_FORM_ID_alter().
+ */
+function jquery_update_form_system_theme_settings_alter(&$form, $form_state) {
+  if ($form['var']['#value'] == 'theme_settings') {
+    // global theme settings page
+    return;
+  }
+  $theme_key = $form_state['build_info']['args'][0];
+
+  $default_version = variable_get('jquery_update_jquery_version', '1.10');
+  $theme_version = theme_get_setting('jquery_update_jquery_version', $theme_key);
+
+  $form['jquery_update'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('jQuery Update'),
+  );
+  $form['jquery_update']['jquery_update_jquery_version'] = array(
+    '#type' => 'select',
+    '#title' => t('Theme specific jQuery version'),
+    '#options' => array(
+      '' => t('Site wide default (!version)', array('!version' => $default_version)),
+    ) + jquery_update_get_versions(),
+    '#default_value' => $theme_version,
+    '#description' => t('Optionally select a different version of jQuery to use for pages that are rendered using this theme.'),
+  );
+}
+
+/**
+ * Retrieve the jQuery versions available by this module.
+ *
+ * @return array The available jQuery versions
+ */
+function jquery_update_get_versions() {
+  $versions = &drupal_static(__FUNCTION__);
+  if (!$versions) {
+    $versions = drupal_map_assoc(array('1.5', '1.7', '1.8', '1.9', '1.10'));
+  }
+  return $versions;
+}
+
+/**
  * Update jQuery to the CDN or local path.
  *
  * @param array $javascript
