diff --git a/core/lib/Drupal/Core/Config/StorageBase.php b/core/lib/Drupal/Core/Config/StorageBase.php
index b03ff27..24bd7ad 100644
--- a/core/lib/Drupal/Core/Config/StorageBase.php
+++ b/core/lib/Drupal/Core/Config/StorageBase.php
@@ -86,11 +86,26 @@ abstract class StorageBase implements StorageInterface {
    * Implements StorageInterface::write().
    */
   public function write($data) {
+    $this->preSave();
     $this->writeToActive($data);
     $this->writeToFile($data);
   }
 
   /**
+   * Fires presave hooks.
+   */
+  protected function presave($data) {
+    $original = $this->read();
+    module_invoke_all('config_presave', $this, $data, $original);
+    $hook = 'config_presave';
+    $part = strtok($this->name, '.');
+    do {
+      $hook .= '_' . $part;
+      module_invoke_all($hook, $this, $data, $changed);
+    } while ($part = strtok('.'));
+  }
+
+  /**
    * Implements StorageInterface::writeToFile().
    */
   public function writeToFile($data) {
diff --git a/core/modules/image/image.module b/core/modules/image/image.module
index 973f36a..32c488f 100644
--- a/core/modules/image/image.module
+++ b/core/modules/image/image.module
@@ -326,10 +326,10 @@ function image_file_predelete(File $file) {
 }
 
 /**
- * Implements hook_image_style_save().
+ * Implements hook_config_presave_image_style().
  */
-function image_image_style_save($style) {
-  if (isset($style['old_name']) && $style['old_name'] != $style['name']) {
+function image_config_presave_image_style($config, $effects, $original) {
+  if ($effects != $original) {
     $instances = field_read_instances();
     // Loop through all fields searching for image fields.
     foreach ($instances as $instance) {
@@ -360,7 +360,7 @@ function image_image_style_save($style) {
  * Implements hook_image_style_delete().
  */
 function image_image_style_delete($style) {
-  image_image_style_save($style);
+  image_config_presave_image_style($style);
 }
 
 /**
@@ -590,9 +590,6 @@ function image_style_save($style) {
   //   yet.
   $style['is_new'] = TRUE;
 
-  // Let other modules update as necessary on save.
-  module_invoke_all('image_style_save', $style);
-
   // Clear all caches and flush.
   image_style_flush($style);
 
