diff --git a/config/install/textimage.settings.yml b/config/install/textimage.settings.yml
index 4cd318c..f0ffd43 100644
--- a/config/install/textimage.settings.yml
+++ b/config/install/textimage.settings.yml
@@ -16,7 +16,3 @@ background:
   plugin_settings:
     textimage:
       path: ''
-color:
-  plugin_id: textimage
-  plugin_settings:
-    textimage: { }
diff --git a/config/schema/textimage.schema.yml b/config/schema/textimage.schema.yml
index 514feeb..6330ebe 100644
--- a/config/schema/textimage.schema.yml
+++ b/config/schema/textimage.schema.yml
@@ -55,18 +55,6 @@ textimage.settings:
           label: 'Plugins settings'
           sequence:
             type: textimage.plugin.background.[%key]
-    color:
-      type: mapping
-      label: 'Color form element management'
-      mapping:
-        plugin_id:
-          type: text
-          label: 'Selected plugin id'
-        plugin_settings:
-          type: sequence
-          label: 'Plugins settings'
-          sequence:
-            type: textimage.plugin.color.[%key]
 
 
 # Schema for Textimage plugins settings.
@@ -94,15 +82,6 @@ textimage.plugin.background.textimage:
       type: string
       label: 'Path where image files can be found'
 
-textimage.plugin.color.*:
-  type: mapping
-  label: 'Color element plugin settings'
-
-textimage.plugin.color.textimage:
-  type: mapping
-  label: 'Textimage color element plugin settings'
-
-
 # Schema for Textimage third party settings for image styles.
 image.style.*.third_party.textimage:
   type: mapping
diff --git a/css/admin.ui.css b/css/admin.ui.css
index 35b62f2..e808e39 100644
--- a/css/admin.ui.css
+++ b/css/admin.ui.css
@@ -12,11 +12,3 @@
   margin: 0;
   padding: 0;
 }
-
-/* Color box in image style UI */
-
-span.textimage-color-box {
-  border: 1px solid;
-  font-weight: bold;
-  padding: 0.1em 0.5em;
-}
diff --git a/css/textimage.color_element.css b/css/textimage.color_element.css
deleted file mode 100644
index 3170708..0000000
--- a/css/textimage.color_element.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/* Textimage-provided color element */
-
-div.textimage-color-element  span.field-suffix {
-  vertical-align: -webkit-baseline-middle;
-}
diff --git a/js/textimage.color_element.js b/js/textimage.color_element.js
deleted file mode 100644
index 78632c9..0000000
--- a/js/textimage.color_element.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * @file
- *
- * Textimage color element.
- *
- * Alters field_suffix form element after change to the color field.
- */
-
-(function ($) {
-
-  "use strict";
-
-  Drupal.behaviors.textimageColorElement = {
-
-    attach: function (context, settings) {
-      $('.textimage-color-element .form-color', context).once('textimage-color-element').each(function (index) {
-        $(this).on('change', function (event) {
-          var suffix = $(this).parents('.textimage-color-element').find('.field-suffix').get(0);
-          $(suffix).text(this.value.toUpperCase());
-        });
-      });
-    }
-
-  };
-})(jQuery);
diff --git a/src/Component/ColorUtility.php b/src/Component/ColorUtility.php
deleted file mode 100644
index f218aef..0000000
--- a/src/Component/ColorUtility.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\textimage\Component\ColorUtility.
- */
-
-namespace Drupal\textimage\Component;
-
-use Drupal\Component\Utility\Color;
-use Drupal\Component\Utility\Unicode;
-
-/**
- * Textimage - Color handling methods.
- */
-abstract class ColorUtility {
-
-  /**
-   * Determine best match to over/underlay a defined color.
-   *
-   * Calculates UCCIR 601 luma of the entered color and returns a black or
-   * white color to ensure readibility.
-   *
-   * @see http://en.wikipedia.org/wiki/Luma_video
-   */
-  public static function matchLuma($rgba, $soft = FALSE) {
-    $rgb = Unicode::substr($rgba, 0, 7);
-    list($r, $g, $b) = array_values(Color::hexToRgb($rgb));
-    $luma = 1 - (0.299 * $r + 0.587 * $g + 0.114 * $b) / 255;
-    if ($luma < 0.5) {
-      // Bright colors - black.
-      $d = 0;
-    }
-    else {
-      // Dark colors - white.
-      $d = 255;
-    }
-    return Color::rgbToHex(array($d, $d, $d));
-  }
-
-  /**
-   * Convert RGBA alpha to percent opacity.
-   *
-   * @param string $rgba
-   *   RGBA hexadecimal.
-   *
-   * @return int
-   *   Opacity as percentage (0 = transparent, 100 = fully opaque).
-   */
-  public static function rgbaToOpacity($rgba) {
-    $hex = Unicode::substr($rgba, 7, 2);
-    return $hex ? floor(hexdec($hex) / 255 * 100) : 100;
-  }
-
-  /**
-   * Convert percent opacity to hex alpha.
-   *
-   * @param int $value
-   *   Opacity as percentage (0 = transparent, 100 = fully opaque).
-   *
-   * @return string|null
-   *   Opacity as HEX (#00 = transparent, #FF = fully opaque).
-   */
-  public static function opacityToAlpha($value) {
-    if (!$value || $value < 0 || $value > 100) {
-      return NULL;
-    }
-    return Unicode::strtoupper(str_pad(dechex(ceil($value / 100 * 255)), 2, '0', STR_PAD_LEFT));
-  }
-
-}
diff --git a/src/Element/TextimageColor.php b/src/Element/TextimageColor.php
deleted file mode 100644
index 93cf0d5..0000000
--- a/src/Element/TextimageColor.php
+++ /dev/null
@@ -1,172 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\textimage\Element\TextimageColor.
- */
-
-namespace Drupal\textimage\Element;
-
-use Drupal\Component\Utility\Unicode;
-use Drupal\Core\Form\FormStateInterface;
-use Drupal\Core\Render\Element\FormElement;
-use Drupal\textimage\Component\ColorUtility;
-
-/**
- * Implements a form element to enable capturing color information.
- *
- * Enable capturing color information. Depending on the options, uses a normal
- * textfield or a jquery_colorpicker element to capture the HEX value of a
- * color.
- *
- * @FormElement("textimage_color")
- */
-class TextimageColor extends FormElement {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getInfo() {
-    $class = get_class($this);
-    return array(
-      '#input' => TRUE,
-      '#process' => array(
-        array($class, 'processTextimageColor'),
-      ),
-      '#element_validate' => array(
-        array($class, 'validateTextimageColor'),
-      ),
-    );
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function valueCallback(&$element, $input, FormStateInterface $form_state) {
-    if ($input !== FALSE && $input !== NULL) {
-      // Make sure element properties are set.
-      $element['#allow_null'] = isset($element['#allow_null']) ? $element['#allow_null'] : FALSE;
-      $element['#allow_opacity'] = isset($element['#allow_opacity']) ? $element['#allow_opacity'] : FALSE;
-
-      // Normalize returned element values to a rgba hex value.
-      $val = '';
-      if ($element['#allow_null'] && !empty($input['container']['transparent'])) {
-        return '';
-      }
-      elseif ($element['#allow_null'] || $element['#allow_opacity']) {
-        $val = Unicode::strtoupper($input['container']['hex']);
-      }
-      else {
-        $val = Unicode::strtoupper($input['hex']);
-      }
-      if ($val[0] <> '#') {
-        $val = '#' . $val;
-      }
-      if ($element['#allow_opacity']) {
-        $val .= ColorUtility::opacityToAlpha($input['container']['opacity']);
-      }
-      return $val;
-    }
-    return '';
-  }
-
-  /**
-   * Processes a 'textimage_color' form element.
-   *
-   * @param array $element
-   *   The form element to process. Properties used:
-   *     '#allow_null' - if set to TRUE, a checkbox is displayed to set the
-   *      color as a full transparency, In this case, color hex and opacity are
-   *      hidden, and the value returned is NULL.
-   *     '#allow_opacity' - if set to TRUE, a textfield is displayed to capture the
-   *      'opacity' value, as a percentage.
-   * @param \Drupal\Core\Form\FormStateInterface $form_state
-   *   The current state of the form.
-   * @param array $complete_form
-   *   The complete form structure.
-   *
-   * @return array
-   *   The processed element.
-   */
-  public static function processTextimageColor(&$element, FormStateInterface $form_state, &$complete_form) {
-    // Make sure element properties are set.
-    $element['#allow_null'] = isset($element['#allow_null']) ? $element['#allow_null'] : FALSE;
-    $element['#allow_opacity'] = isset($element['#allow_opacity']) ? $element['#allow_opacity'] : FALSE;
-    $element['#description'] = isset($element['#description']) ? $element['#description'] : NULL;
-    $element['#states'] = isset($element['#states']) ? $element['#states'] : NULL;
-    $element['#checkbox_title'] = isset($element['#checkbox_title']) ? $element['#checkbox_title'] : t('Transparent');
-
-    // In case default value is transparent, set hex and opacity to default
-    // values (white, fully opaque) so that if transparency is unchecked,
-    // we have a starting value.
-    $transparent = empty($element['#default_value']) ? TRUE : FALSE;
-    $hex = $transparent ? '#FFFFFF' : Unicode::substr($element['#default_value'], 0, 7);
-    $opacity = $transparent ? 100 : ColorUtility::rgbaToOpacity($element['#default_value']);
-
-    $colorPlugin = \Drupal::service('plugin.manager.textimage.color')->getPlugin();
-
-    if ($element['#allow_null'] || $element['#allow_opacity']) {
-      // More sub-fields are needed to define the color, wrap them in a
-      // container fieldset.
-      $element['container'] = array(
-        '#type' => 'fieldset',
-        '#description' => $element['#description'],
-        '#title' => $element['#title'],
-        '#states' => $element['#states'],
-      );
-      // Checkbox for transparency.
-      if ($element['#allow_null']) {
-        $element['container']['transparent'] = array(
-          '#type' => 'checkbox',
-          '#title' => $element['#checkbox_title'],
-          '#default_value' => $transparent,
-        );
-      }
-      // Color field.
-      $element['container']['hex'] = $colorPlugin->selectionElement(array('#default_value' => $hex));
-      // States management for color field.
-      $element['container']['hex']['#states'] = array(
-        'visible' => array(
-          ':input[name="' . $element['#name'] . '[container][transparent]"]' => array('checked' => FALSE),
-        ),
-      );
-      // Textfield for opacity.
-      if ($element['#allow_opacity']) {
-        $element['container']['opacity'] = array(
-          '#type'  => 'number',
-          '#title' => t('Opacity'),
-          '#default_value' => $opacity,
-          '#maxlength' => 3,
-          '#size' => 2,
-          '#field_suffix' => '%',
-          '#min' => 0,
-          '#max' => 100,
-          '#states' => array(
-            'visible' => array(
-              ':input[name="' . $element['#name'] . '[container][transparent]"]' => array('checked' => FALSE),
-            ),
-          ),
-        );
-      }
-    }
-    else {
-      // No transparency or opacity, straight color field.
-      $element['hex'] = $colorPlugin->selectionElement(array('#default_value' => $hex));
-    }
-
-    unset(
-      $element['#description'],
-      $element['#title']
-    );
-
-    return $element;
-  }
-
-  /**
-   * Form element validation handler.
-   */
-  public static function validateTextimageColor(&$element, FormStateInterface $form_state, &$complete_form) {
-    $form_state->setValueForElement($element, $element['#value']);
-  }
-
-}
diff --git a/src/Form/SettingsForm.php b/src/Form/SettingsForm.php
index 85ddc10..8adf70e 100644
--- a/src/Form/SettingsForm.php
+++ b/src/Form/SettingsForm.php
@@ -45,13 +45,6 @@ class SettingsForm extends ConfigFormBase {
   protected $backgroundManager;
 
   /**
-   * The color plugin manager.
-   *
-   * @var \Drupal\textimage\Plugin\TextimagePluginManager
-   */
-  protected $colorManager;
-
-  /**
    * The Image factory.
    *
    * @var \Drupal\Core\Image\ImageFactory
@@ -69,17 +62,14 @@ class SettingsForm extends ConfigFormBase {
    *   The font plugin manager.
    * @param \Drupal\textimage\Plugin\TextimagePluginManager $background_plugin_manager
    *   The background images plugin manager.
-   * @param \Drupal\textimage\Plugin\TextimagePluginManager $color_plugin_manager
-   *   The color plugin manager.
    * @param \Drupal\textimage\Plugin\TextimagePluginManager $image_factory
    *   The Image factory.
    */
-  public function __construct(TextimageFactory $textimage_factory, ConfigFactoryInterface $config_factory, TextimagePluginManager $font_plugin_manager, TextimagePluginManager $background_plugin_manager, TextimagePluginManager $color_plugin_manager, ImageFactory $image_factory) {
+  public function __construct(TextimageFactory $textimage_factory, ConfigFactoryInterface $config_factory, TextimagePluginManager $font_plugin_manager, TextimagePluginManager $background_plugin_manager, ImageFactory $image_factory) {
     parent::__construct($config_factory);
     $this->textimageFactory = $textimage_factory;
     $this->fontManager = $font_plugin_manager;
     $this->backgroundManager = $background_plugin_manager;
-    $this->colorManager = $color_plugin_manager;
     $this->imageFactory = $image_factory;
   }
 
@@ -92,7 +82,6 @@ class SettingsForm extends ConfigFormBase {
       $container->get('config.factory'),
       $container->get('plugin.manager.textimage.font'),
       $container->get('plugin.manager.textimage.background'),
-      $container->get('plugin.manager.textimage.color'),
       $container->get('image.factory')
     );
   }
@@ -134,13 +123,6 @@ class SettingsForm extends ConfigFormBase {
       $background_plugin->setConfiguration($form_state->getValue(['settings', 'background', 'plugin_settings']));
     }
 
-    // Color plugin.
-    $color_plugin_id = $ajaxing ? $form_state->getValue(['settings', 'color', 'plugin_id']) : $config->get('color.plugin_id');
-    $color_plugin = $this->colorManager->getPlugin($color_plugin_id);
-    if ($ajaxing && $form_state->hasValue(['settings', 'color', 'plugin_settings'])) {
-      $color_plugin->setConfiguration($form_state->getValue(['settings', 'color', 'plugin_settings']));
-    }
-
     // AJAX messages
     $form['ajax_messages'] = array(
       '#type' => 'container',
@@ -217,22 +199,6 @@ class SettingsForm extends ConfigFormBase {
     );
     $form['settings']['background']['plugin_settings'] = $background_plugin->buildConfigurationForm(array(), $form_state, $ajax_settings);
 
-    // Color.
-    $form['settings']['color'] = array(
-      '#type' => 'details',
-      '#open' => TRUE,
-      '#title' => $this->t('Color manager'),
-      '#tree' => TRUE,
-    );
-    $form['settings']['color']['plugin_id'] = array(
-      '#type' => 'radios',
-      '#options' => $this->colorManager->getPluginOptions(),
-      '#default_value' => $color_plugin->getPluginId(),
-      '#required' => TRUE,
-      '#ajax'  => $ajax_settings,
-    );
-    $form['settings']['color']['plugin_settings'] = $color_plugin->buildConfigurationForm(array(), $form_state, $ajax_settings);
-
     // URL generation.
     $form['settings']['url_generation'] = array(
       '#type' => 'details',
@@ -331,15 +297,6 @@ class SettingsForm extends ConfigFormBase {
       ->set('background.plugin_id', $background_plugin->getPluginId())
       ->set('background.plugin_settings.' . $background_plugin->getPluginId(), $background_plugin->getConfiguration());
 
-    // Color plugin.
-    $color_plugin = $this->colorManager->getPlugin($form_state->getValue(['settings', 'color', 'plugin_id']));
-    if ($form_state->hasValue(['settings', 'color', 'plugin_settings'])) {
-      $color_plugin->setConfiguration($form_state->getValue(['settings', 'color', 'plugin_settings']));
-    }
-    $config
-      ->set('color.plugin_id', $color_plugin->getPluginId())
-      ->set('color.plugin_settings.' . $color_plugin->getPluginId(), $color_plugin->getConfiguration());
-
     // URL generation.
     $config
       ->set('url_generation.enabled', $form_state->getValue(['settings', 'url_generation', 'enabled']))
diff --git a/src/Plugin/ImageEffect/TextimageBackground.php b/src/Plugin/ImageEffect/TextimageBackground.php
index 1a09387..83b71b4 100644
--- a/src/Plugin/ImageEffect/TextimageBackground.php
+++ b/src/Plugin/ImageEffect/TextimageBackground.php
@@ -108,7 +108,7 @@ class TextimageBackground extends TextimageEffectBase {
     );
     // Derivative image format - GIF color.
     $form['format']['gif_transparent_color'] = array(
-      '#type' => 'textimage_color',
+      '#type' => 'image_effects_color',
       '#title' => $this->t('Transparent color for GIF images'),
       '#description'  => $this->t('Select a color to be used for transparency of GIF image files. Leave the checkbox ticked to use the color of the image being processed, if it has one.'),
       '#allow_null' => TRUE,
@@ -132,7 +132,7 @@ class TextimageBackground extends TextimageEffectBase {
       '#description'  => $this->t('Select the color you wish to use for the background of the image. This color will be placed around the image or fill the background if no image is selected.'),
     );
     $form['background']['color'] = array(
-      '#type' => 'textimage_color',
+      '#type' => 'image_effects_color',
       '#title' => $this->t('Color'),
       '#allow_null' => TRUE,
       '#allow_opacity' => TRUE,
@@ -291,7 +291,7 @@ class TextimageBackground extends TextimageEffectBase {
     $data = $this->configuration;
     if ($data['background']['color']) {
       $data['background_color_detail'] = array(
-        '#theme' => 'textimage_color_detail',
+        '#theme' => 'image_effects_color_detail',
         '#color' => $data['background']['color'],
         '#border' => TRUE,
         '#border_color' => 'matchLuma',
diff --git a/src/Plugin/ImageEffect/TextimageText.php b/src/Plugin/ImageEffect/TextimageText.php
index 4ebfce8..3d5591d 100644
--- a/src/Plugin/ImageEffect/TextimageText.php
+++ b/src/Plugin/ImageEffect/TextimageText.php
@@ -14,7 +14,7 @@ use Drupal\Core\Ajax\ReplaceCommand;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Image\ImageInterface;
 use Drupal\Core\Render\BubbleableMetadata;
-use Drupal\textimage\Component\ColorUtility;
+use Drupal\image_effects\Component\ColorUtility;
 use Drupal\textimage\Component\Rectangle;
 use Drupal\textimage\Element\TextimageColor;
 
@@ -183,7 +183,7 @@ class TextimageText extends TextimageEffectBase {
       '#max' => 360,
     );
     $form['font']['color'] = array(
-      '#type' => 'textimage_color',
+      '#type' => 'image_effects_color',
       '#title' => $this->t('Font color'),
       '#description'  => $this->t('Set the font color.'),
       '#allow_opacity' => TRUE,
@@ -318,7 +318,7 @@ class TextimageText extends TextimageEffectBase {
       ),
     );
     $form['font']['stroke']['color'] = array(
-      '#type' => 'textimage_color',
+      '#type' => 'image_effects_color',
       '#title' => $this->t('Color'),
       '#description'  => $this->t('Set the outline/shadow color.'),
       '#allow_opacity' => TRUE,
@@ -490,7 +490,7 @@ class TextimageText extends TextimageEffectBase {
     );
     // Background color.
     $form['layout']['background_color'] = array(
-      '#type' => 'textimage_color',
+      '#type' => 'image_effects_color',
       '#title' => $this->t('Background color'),
       '#description'  => $this->t('Select the color you wish to use for the background of the text.'),
       '#allow_null' => TRUE,
@@ -585,7 +585,7 @@ $form_state->setValue(['ajax_config', 'preview_bar', 'debug_visuals'], $form_sta
   public function getSummary() {
     $data = $this->configuration;
     $data['font_color_detail'] = array(
-      '#theme' => 'textimage_color_detail',
+      '#theme' => 'image_effects_color_detail',
       '#color' => $data['font']['color'],
       '#border' => TRUE,
       '#border_color' => 'matchLuma',
@@ -593,7 +593,7 @@ $form_state->setValue(['ajax_config', 'preview_bar', 'debug_visuals'], $form_sta
     if ($stroke_mode = $this->strokeMode()) {
       $data['stroke_mode'] = $stroke_mode;
       $data['stroke_color_detail'] = array(
-        '#theme' => 'textimage_color_detail',
+        '#theme' => 'image_effects_color_detail',
         '#color' => $data['font']['stroke_color'],
         '#border' => TRUE,
         '#border_color' => 'matchLuma',
@@ -601,7 +601,7 @@ $form_state->setValue(['ajax_config', 'preview_bar', 'debug_visuals'], $form_sta
     }
     if ($data['layout']['background_color']) {
       $data['background_color_detail'] = array(
-        '#theme' => 'textimage_color_detail',
+        '#theme' => 'image_effects_color_detail',
         '#color' => $data['layout']['background_color'],
         '#border' => TRUE,
         '#border_color' => 'matchLuma',
diff --git a/src/Plugin/ImageToolkit/Operation/gd/GDTextimageOperationBase.php b/src/Plugin/ImageToolkit/Operation/gd/GDTextimageOperationBase.php
index 6958571..01695d8 100644
--- a/src/Plugin/ImageToolkit/Operation/gd/GDTextimageOperationBase.php
+++ b/src/Plugin/ImageToolkit/Operation/gd/GDTextimageOperationBase.php
@@ -10,7 +10,7 @@ namespace Drupal\textimage\Plugin\ImageToolkit\Operation\gd;
 use Drupal\Component\Utility\Color;
 use Drupal\Component\Utility\Unicode;
 use Drupal\system\Plugin\ImageToolkit\Operation\gd\GDImageToolkitOperationBase;
-use Drupal\textimage\Component\ColorUtility;
+use Drupal\image_effects\Component\ColorUtility;
 use Drupal\textimage\Component\Rectangle;
 use Drupal\textimage\Plugin\ImageToolkit\Operation\TextimageOperationTrait;
 
diff --git a/src/Plugin/ImageToolkit/Operation/gd/TextimageTextOverlay.php b/src/Plugin/ImageToolkit/Operation/gd/TextimageTextOverlay.php
index 9f34b40..5e9a5de 100644
--- a/src/Plugin/ImageToolkit/Operation/gd/TextimageTextOverlay.php
+++ b/src/Plugin/ImageToolkit/Operation/gd/TextimageTextOverlay.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\textimage\Plugin\ImageToolkit\Operation\gd;
 
-use Drupal\textimage\Component\ColorUtility;
+use Drupal\image_effects\Component\ColorUtility;
 
 /**
  * Defines Textimage GD2 text overlay operation.
diff --git a/src/Plugin/ImageToolkit/Operation/gd/TextimageTextToWrapper.php b/src/Plugin/ImageToolkit/Operation/gd/TextimageTextToWrapper.php
index 4ede49e..2bea64d 100644
--- a/src/Plugin/ImageToolkit/Operation/gd/TextimageTextToWrapper.php
+++ b/src/Plugin/ImageToolkit/Operation/gd/TextimageTextToWrapper.php
@@ -9,7 +9,7 @@ namespace Drupal\textimage\Plugin\ImageToolkit\Operation\gd;
 
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Image\ImageInterface;
-use Drupal\textimage\Component\ColorUtility;
+use Drupal\image_effects\Component\ColorUtility;
 use Drupal\textimage\Component\Rectangle;
 use Drupal\textimage\Component\TextUtility;
 use Drupal\textimage\Plugin\ImageToolkit\Operation\TextimageTextToWrapperTrait;
diff --git a/src/Plugin/TextimageColorPluginInterface.php b/src/Plugin/TextimageColorPluginInterface.php
deleted file mode 100644
index e611b69..0000000
--- a/src/Plugin/TextimageColorPluginInterface.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\textimage\Plugin\TextimageColorPluginInterface.
- */
-
-namespace Drupal\textimage\Plugin;
-
-/**
- * Color plugin interface.
- *
- * Defines the methods that color plugins have to implement.
- */
-interface TextimageColorPluginInterface extends TextimagePluginBaseInterface {
-
-}
diff --git a/src/Plugin/textimage/color/Textimage.php b/src/Plugin/textimage/color/Textimage.php
deleted file mode 100644
index 5290f35..0000000
--- a/src/Plugin/textimage/color/Textimage.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\textimage\Plugin\textimage\color\Textimage.
- */
-
-namespace Drupal\textimage\Plugin\textimage\color;
-
-use Drupal\Core\Form\FormStateInterface;
-use Drupal\textimage\Plugin\TextimageColorPluginInterface;
-use Drupal\textimage\Plugin\TextimagePluginBase;
-
-/**
- * Basic color plugin for Textimage.
- *
- * Provides access to images stored in a directory, specified in configuration.
- *
- * @Plugin(
- *   id = "textimage",
- *   title = @Translation("Textimage basic color handler"),
- *   short_title = @Translation("Textimage"),
- *   help = @Translation("Use an HTML5 color element to select colors.")
- * )
- */
-class Textimage extends TextimagePluginBase implements TextimageColorPluginInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function selectionElement(array $options = array()) {
-    return array(
-      '#type' => 'color',
-      '#title'   => isset($options['#title']) ? $options['#title'] : $this->t('Color'),
-      '#description' => isset($options['#description']) ? $options['#description'] : NULL,
-      '#default_value' => $options['#default_value'],
-      '#field_suffix' => $options['#default_value'],
-      '#wrapper_attributes' => ['class' => ['textimage-color-element']],
-      '#maxlength' => 7,
-      '#size' => 7,
-      '#attached' => ['library' => ['textimage/textimage.color_element']],
-    );
-  }
-}
diff --git a/src/Tests/TextimageTestBase.php b/src/Tests/TextimageTestBase.php
index 6324e0b..198f81b 100644
--- a/src/Tests/TextimageTestBase.php
+++ b/src/Tests/TextimageTestBase.php
@@ -21,7 +21,7 @@ abstract class TextimageTestBase extends WebTestBase {
   protected $textimageFactory;
   protected $renderer;
 
-  public static $modules = array('textimage', 'node');
+  public static $modules = array('textimage', 'node', 'image_effects', 'imagemagick');
 
   /**
    * {@inheritdoc}
diff --git a/templates/textimage-color-detail.html.twig b/templates/textimage-color-detail.html.twig
deleted file mode 100644
index 36fe45a..0000000
--- a/templates/textimage-color-detail.html.twig
+++ /dev/null
@@ -1,20 +0,0 @@
-{#
-/**
- * @file
- * Default theme implementation for Textimage color box templates.
- *
- * @ingroup themeable
- */
-#}
-{% if color %}
-  {% if border %}
-	<span class='textimage-color-box' style='background-color: {{ color }}; color: {{ color }}; border-color: {{ border_color }};'>M</span> {{ color }}
-  {% else %}
-	<span class='textimage-color-box' style='background-color: {{ color }}; color: {{ color }}; '>M</span> {{ color }}
-  {% endif %}
-  {% if color_opacity < 100 %}
-    {{ 'opacity'|t  }}: {{ color_opacity }}%
-  {% endif %}
-{% else %}
-  {{ 'Transparent'|t  }}
-{% endif %}
diff --git a/textimage.info.yml b/textimage.info.yml
index 08bfb9d..6e63716 100644
--- a/textimage.info.yml
+++ b/textimage.info.yml
@@ -6,3 +6,4 @@ package: Media
 configure: textimage.settings
 dependencies:
  - image
+ - image_effects
diff --git a/textimage.libraries.yml b/textimage.libraries.yml
index fb10b83..d8e77f4 100644
--- a/textimage.libraries.yml
+++ b/textimage.libraries.yml
@@ -5,11 +5,3 @@ admin.ui:
   css:
     component:
       css/admin.ui.css: {}
-
-textimage.color_element:
-  version: VERSION
-  js:
-    js/textimage.color_element.js: {}
-  css:
-    component:
-      css/textimage.color_element.css: {}
diff --git a/textimage.module b/textimage.module
index d4f2452..09dbbc7 100644
--- a/textimage.module
+++ b/textimage.module
@@ -12,7 +12,7 @@ use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\StreamWrapper\StreamWrapperInterface;
 use Drupal\Core\Template\Attribute;
 use Drupal\image\ImageStyleInterface;
-use Drupal\textimage\Component\ColorUtility;
+use Drupal\image_effects\Component\ColorUtility;
 use Drupal\textimage\Textimage;
 use Drupal\textimage\TextimageException;
 
@@ -65,14 +65,6 @@ function textimage_theme() {
         'textimage_data' => [],
       ),
     ),
-    // Render a color information box and string.
-    'textimage_color_detail' => array(
-      'variables' => array(
-        'color' => '#000000',
-        'border' => FALSE,
-        'border_color' => '#000000',
-      ),
-    ),
   );
   return $theme;
 }
@@ -285,27 +277,6 @@ function template_preprocess_textimage_formatter(&$variables) {
 }
 
 /**
- * Prepares variables to get a color info.
- *
- * Default template: textimage-color-detail.html.twig.
- */
-function template_preprocess_textimage_color_detail(&$variables) {
-  $variables['#attached']['library'][] = 'textimage/admin.ui';
-  if ($variables['color']) {
-    if ($variables['border']) {
-      if ($variables['border_color'] == 'matchLuma') {
-        $variables['border_color'] = ColorUtility::matchLuma($variables['color']);
-      }
-      else {
-        $variables['border_color'] = Unicode::substr($variables['border_color'], 0, 7);
-      }
-    }
-    $variables['color_opacity'] = ColorUtility::rgbaToOpacity($variables['color']);
-    $variables['color'] = Unicode::substr($variables['color'], 0, 7);
-  }
-}
-
-/**
  * Prepares variables to get a Textimage preview.
  *
  * Default template: textimage-preview.html.twig.
diff --git a/textimage.services.yml b/textimage.services.yml
index 815fd08..0de60f1 100644
--- a/textimage.services.yml
+++ b/textimage.services.yml
@@ -19,9 +19,6 @@ services:
   plugin.manager.textimage.background:
     class: Drupal\textimage\Plugin\TextimagePluginManager
     arguments: [background, '@container.namespaces', '@cache.discovery', '@module_handler', '@config.factory']
-  plugin.manager.textimage.color:
-    class: Drupal\textimage\Plugin\TextimagePluginManager
-    arguments: [color, '@container.namespaces', '@cache.discovery', '@module_handler', '@config.factory']
   textimage.factory:
     class: Drupal\textimage\TextimageFactory
     arguments: ['@config.factory', '@token', '@textimage.logger', '@cache.textimage', '@current_user', '@stream_wrapper_manager', '@entity.manager']
