diff --git a/core/modules/image/config/image.settings.yml b/core/modules/image/config/image.settings.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c6dadc8ee59a8e535c56c4a1e7b33e32f89da279
--- /dev/null
+++ b/core/modules/image/config/image.settings.yml
@@ -0,0 +1 @@
+preview_image: core/modules/image/sample.png
diff --git a/core/modules/image/image.admin.inc b/core/modules/image/image.admin.inc
index ca55227141b84d71fb7039e08a362ab1e5b97f09..933a4ade3c3ba4c1c2bb16591b73abc0490395e8 100644
--- a/core/modules/image/image.admin.inc
+++ b/core/modules/image/image.admin.inc
@@ -697,7 +697,7 @@ function theme_image_style_effects($variables) {
 function theme_image_style_preview($variables) {
   $style = $variables['style'];
 
-  $sample_image = variable_get('image_style_preview_image', drupal_get_path('module', 'image') . '/sample.png');
+  $sample_image = config('image.settings')->get('preview_image');
   $sample_width = 160;
   $sample_height = 160;
 
diff --git a/core/modules/image/image.install b/core/modules/image/image.install
index 88f05a121c91f0ae5e14738d67c3be5cc7e8c501..e4e77d859fe9ab31c3d2f53952659c7fd44a311c 100644
--- a/core/modules/image/image.install
+++ b/core/modules/image/image.install
@@ -167,3 +167,14 @@ function image_update_8001() {
   db_drop_table('image_styles');
   db_drop_table('image_effects');
 }
+
+/**
+ * Moves image module settings from variable to config.
+ *
+ * @ingroup config_upgrade
+ */
+function image_update_8002() {
+  update_variables_to_config('image.settings', array(
+    'image_style_preview_image' => 'preview_image',
+  ));
+}