diff --git a/core/includes/image.inc b/core/includes/image.inc
index f6ae7f1..e8e0b0b 100644
--- a/core/includes/image.inc
+++ b/core/includes/image.inc
@@ -65,7 +65,7 @@ function image_get_toolkit() {
 
   if (!isset($toolkit)) {
     $toolkits = image_get_available_toolkits();
-    $toolkit = variable_get('image_toolkit', 'gd');
+    $toolkit = config('system.image')->get('toolkit');
     if (!isset($toolkits[$toolkit]) || !function_exists('image_' . $toolkit . '_load')) {
       // The selected toolkit isn't available so return the first one found. If
       // none are available this will return FALSE.
diff --git a/core/modules/system/config/system.image.yml b/core/modules/system/config/system.image.yml
new file mode 100644
index 0000000..cca062e
--- /dev/null
+++ b/core/modules/system/config/system.image.yml
@@ -0,0 +1,3 @@
+toolkit: gd
+gd:
+    jpeg_quality: '75'
diff --git a/core/modules/system/image.gd.inc b/core/modules/system/image.gd.inc
index f6f12ae..f930bcb 100644
--- a/core/modules/system/image.gd.inc
+++ b/core/modules/system/image.gd.inc
@@ -25,7 +25,7 @@ function image_gd_settings() {
       '#description' => t('Define the image quality for JPEG manipulations. Ranges from 0 to 100. Higher values mean better image quality but bigger files.'),
       '#min' => 0,
       '#max' => 100,
-      '#default_value' => variable_get('image_jpeg_quality', 75),
+      '#default_value' => config('system.image')->get('gd.jpeg_quality'),
       '#field_suffix' => t('%'),
     );
 
@@ -38,6 +38,16 @@ function image_gd_settings() {
 }
 
 /**
+ * Form submission handler for image_gd_settings().
+ * @see system_image_toolkit_settings_submit
+ */
+function image_gd_settings_submit($form, &$form_state) {
+  config('system.image')
+    ->set('gd.jpeg_quality', $form_state['values']['image_jpeg_quality'])
+    ->save();
+}
+
+/**
  * Verify GD2 settings (that the right version is actually installed).
  *
  * @return
@@ -269,7 +279,7 @@ function image_gd_save(stdClass $image, $destination) {
     return FALSE;
   }
   if ($extension == 'jpeg') {
-    $success = $function($image->resource, $destination, variable_get('image_jpeg_quality', 75));
+    $success = $function($image->resource, $destination, config('system.image')>get('gd.jpeg_quality'));
   }
   else {
     // Always save PNG images with full transparency.
diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc
index 2947245..d2343ef 100644
--- a/core/modules/system/system.admin.inc
+++ b/core/modules/system/system.admin.inc
@@ -1854,14 +1854,13 @@ function system_file_system_settings() {
  * Form builder; Configure site image toolkit usage.
  *
  * @ingroup forms
- * @see system_settings_form()
+ * @see system_config_form()
  */
-function system_image_toolkit_settings() {
+function system_image_toolkit_settings($form, &$form_state) {
   $toolkits_available = image_get_available_toolkits();
   $current_toolkit = image_get_toolkit();
 
   if (count($toolkits_available) == 0) {
-    variable_del('image_toolkit');
     $form['image_toolkit_help'] = array(
       '#markup' => t("No image toolkits were detected. Drupal includes support for <a href='!gd-link'>PHP's built-in image processing functions</a> but they were not detected on this system. You should consult your system administrator to have them enabled, or try using a third party toolkit.", array('gd-link' => url('http://php.net/gd'))),
     );
@@ -1872,12 +1871,16 @@ function system_image_toolkit_settings() {
     $form['image_toolkit'] = array(
       '#type' => 'radios',
       '#title' => t('Select an image processing toolkit'),
-      '#default_value' => variable_get('image_toolkit', $current_toolkit),
+      '#default_value' => config('system.image')->get('toolkit'),
       '#options' => $toolkits_available
     );
   }
   else {
-    variable_set('image_toolkit', key($toolkits_available));
+    $form['image_toolkit'] = array(
+      '#type' => 'value',
+      '#value' => $current_toolkit,
+    );
+    config('system.image')->set('toolkit', key($toolkits_available))->save();
   }
 
   // Get the toolkit's settings form.
@@ -1885,8 +1888,23 @@ function system_image_toolkit_settings() {
   if (function_exists($function)) {
     $form['image_toolkit_settings'] = $function();
   }
+  return system_config_form($form, $form_state);
+}
 
-  return system_settings_form($form);
+/**
+ * Form submission handler for system_image_toolkit_settings().
+ */
+function system_image_toolkit_settings_submit($form, &$form_state) {
+  $current_toolkit = $form_state['values']['image_toolkit'];
+  config('system.image')
+    ->set('toolkit', $current_toolkit)
+    ->save();
+
+  // Allow toolkit to save its own seetings.
+  $function = 'image_' . $current_toolkit . '_settings_submit';
+  if (function_exists($function)) {
+    $function($form, $form_state);
+  }
 }
 
 /**
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index 96c02c3..4078c69 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -1997,6 +1997,19 @@ function system_update_8014() {
   $config->save();
 }
 
+
+/**
+ * Moves image toolkit settings from variable to config.
+ *
+ * @ingroup config_upgrade
+ */
+function system_update_8015() {
+  update_variables_to_config('system.image', array(
+    'image_toolkit' => 'toolkit',
+    'image_jpeg_quality' => 'gd.jpeg_quality',
+  ));
+}
+
 /**
  * @} End of "defgroup updates-7.x-to-8.x".
  * The next series of updates should start at 9000.
