diff --git a/app/widgets/gimptextbuffer.c b/app/widgets/gimptextbuffer.c
index 6a4cfad..87759b7 100644
--- a/app/widgets/gimptextbuffer.c
+++ b/app/widgets/gimptextbuffer.c
@@ -931,7 +931,7 @@ gimp_text_buffer_get_iter_color (GimpTextBuffer    *buffer,
   return NULL;
 }
 
-static GtkTextTag *
+GtkTextTag *
 gimp_text_buffer_get_color_tag (GimpTextBuffer *buffer,
                                 const GimpRGB  *color)
 {
diff --git a/app/widgets/gimptextbuffer.h b/app/widgets/gimptextbuffer.h
index 11ae4f5..5331175 100644
--- a/app/widgets/gimptextbuffer.h
+++ b/app/widgets/gimptextbuffer.h
@@ -120,6 +120,8 @@ void             gimp_text_buffer_set_font          (GimpTextBuffer    *buffer,
 GtkTextTag     * gimp_text_buffer_get_iter_color    (GimpTextBuffer    *buffer,
                                                      const GtkTextIter *iter,
                                                      GimpRGB           *color);
+GtkTextTag     * gimp_text_buffer_get_color_tag     (GimpTextBuffer    *buffer,
+                                                     const GimpRGB     *color);
 void             gimp_text_buffer_set_color         (GimpTextBuffer    *buffer,
                                                      const GtkTextIter *start,
                                                      const GtkTextIter *end,
diff --git a/app/widgets/gimptextstyleeditor.c b/app/widgets/gimptextstyleeditor.c
index 1f8da6e..d4d9e8d 100644
--- a/app/widgets/gimptextstyleeditor.c
+++ b/app/widgets/gimptextstyleeditor.c
@@ -559,6 +559,17 @@ gimp_text_style_editor_list_tags (GimpTextStyleEditor  *editor,
         }
     }
 
+  {
+    GimpRGB     color;
+    GtkTextTag *tag;
+
+    gimp_color_button_get_color (GIMP_COLOR_BUTTON (editor->color_button),
+                                 &color);
+    tag = gimp_text_buffer_get_color_tag (editor->buffer, &color);
+
+    tags = g_list_prepend (tags, tag);
+  }
+
   *remove_tags = g_list_reverse (*remove_tags);
 
   return g_list_reverse (tags);
@@ -675,16 +686,26 @@ gimp_text_style_editor_color_changed (GimpColorButton     *button,
                                       GimpTextStyleEditor *editor)
 {
   GtkTextBuffer *buffer = GTK_TEXT_BUFFER (editor->buffer);
-  GtkTextIter    start, end;
-  GimpRGB        color;
+  GList         *insert_tags;
+  GList         *remove_tags;
 
-  if (! gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
+  if (gtk_text_buffer_get_has_selection (buffer))
     {
-      return;
+      GtkTextIter start, end;
+      GimpRGB     color;
+
+      gtk_text_buffer_get_selection_bounds (buffer, &start, &end);
+
+      gtk_text_buffer_begin_user_action (buffer);
+
+      gimp_color_button_get_color (button, &color);
+      gimp_text_buffer_set_color (editor->buffer, &start, &end, &color);
+
+      gtk_text_buffer_end_user_action (buffer);
     }
 
-  gimp_color_button_get_color (button, &color);
-  gimp_text_buffer_set_color (editor->buffer, &start, &end, &color);
+  insert_tags = gimp_text_style_editor_list_tags (editor, &remove_tags);
+  gimp_text_buffer_set_insert_tags (editor->buffer, insert_tags, remove_tags);
 }
 
 static void
