diff --git a/compiler2/CompilerError.cc b/compiler2/CompilerError.cc
index 99497a01ed73dfbf17c48ccebaeeb79a408ae8e3..38ca9bc2df3d966b574ab332279346102e94a4c4 100644
--- a/compiler2/CompilerError.cc
+++ b/compiler2/CompilerError.cc
@@ -92,7 +92,7 @@ static void end_colorize()
 {
   if (!should_colorize())
     return;
-  fputs("\033]0;m", stderr);
+  fputs("\033[0;m", stderr);
 }
 
 void fatal_error(const char *filename, int lineno, const char *fmt, ...)
@@ -335,7 +335,6 @@ namespace Common {
   void Error_Context::report_error(const Location *loc, const char *fmt,
     va_list args)
   {
-    begin_colorize(COLOR_ERROR);
     if (!suppress_context) print_context(stderr);
     if (tail != 0 && loc && loc->get_filename() == 0) {
       // borrow location information from the innermost context
@@ -345,10 +344,11 @@ namespace Common {
     } else if (loc) {
       loc->print_location(stderr);
     }
+    begin_colorize(COLOR_ERROR);
     fputs("error: ", stderr);
+    end_colorize();
     vfprintf(stderr, fmt, args);
     putc('\n', stderr);
-    end_colorize();
     fflush(stderr);
     increment_error_count();
   }
@@ -356,14 +356,14 @@ namespace Common {
   void Error_Context::report_warning(const Location *loc, const char *fmt,
     va_list args)
   {
-    begin_colorize(COLOR_WARNING);
     if(!(verb_level & 2)) return;
     if (!suppress_context) print_context(stderr);
     if (loc) loc->print_location(stderr);
+    begin_colorize(COLOR_WARNING);
     fputs("warning: ", stderr);
+    end_colorize();
     vfprintf(stderr, fmt, args);
     putc('\n', stderr);
-    end_colorize();
     fflush(stderr);
     increment_warning_count();
   }
@@ -371,13 +371,13 @@ namespace Common {
   void Error_Context::report_note(const Location *loc, const char *fmt,
     va_list args)
   {
-    begin_colorize(COLOR_NOTE);
     if (!suppress_context) print_context(stderr);
     if (loc) loc->print_location(stderr);
+    begin_colorize(COLOR_NOTE);
     fputs("note: ", stderr);
+    end_colorize();
     vfprintf(stderr, fmt, args);
     putc('\n', stderr);
-    end_colorize();
     fflush(stderr);
   }