Index: app/core/core-enums.h
===================================================================
--- app/core/core-enums.h	(revision 24342)
+++ app/core/core-enums.h	(working copy)
@@ -299,6 +299,7 @@
 {
   GIMP_SELECTION_OFF,
   GIMP_SELECTION_LAYER_OFF,
+  GIMP_SELECTION_LAYER_ON,
   GIMP_SELECTION_ON,
   GIMP_SELECTION_PAUSE,
   GIMP_SELECTION_RESUME
Index: app/core/gimplayermask.c
===================================================================
--- app/core/gimplayermask.c	(revision 24342)
+++ app/core/gimplayermask.c	(working copy)
@@ -54,6 +54,7 @@
                                                 const gchar  *undo_desc,
                                                 GError      **error);
 
+static void       gimp_layer_mask_real_edit_changed (GimpLayerMask *layer_mask);
 
 G_DEFINE_TYPE (GimpLayerMask, gimp_layer_mask, GIMP_TYPE_CHANNEL)
 
@@ -97,6 +98,8 @@
 
   viewable_class->default_stock_id = "gimp-layer-mask";
 
+  klass->edit_changed        = gimp_layer_mask_real_edit_changed;
+
   item_class->is_attached    = gimp_layer_mask_is_attached;
   item_class->duplicate      = gimp_layer_mask_duplicate;
   item_class->rename         = gimp_layer_mask_rename;
@@ -281,6 +284,13 @@
   return layer_mask->edit_mask;
 }
 
+static void
+gimp_layer_mask_real_edit_changed (GimpLayerMask *layer_mask)
+{
+  gimp_image_selection_control (GIMP_ITEM (layer_mask)->image,
+                                GIMP_SELECTION_LAYER_ON);
+}
+
 void
 gimp_layer_mask_set_show (GimpLayerMask *layer_mask,
                           gboolean       show,
Index: app/display/gimpdisplayshell-selection.c
===================================================================
--- app/display/gimpdisplayshell-selection.c	(revision 24342)
+++ app/display/gimpdisplayshell-selection.c	(working copy)
@@ -28,6 +28,7 @@
 
 #include "core/gimp.h"
 #include "core/gimpchannel.h"
+#include "core/gimplayermask.h"
 #include "core/gimpimage.h"
 
 #include "gimpcanvas.h"
@@ -75,6 +76,7 @@
 static void      selection_draw           (Selection      *selection);
 static void      selection_undraw         (Selection      *selection);
 static void      selection_layer_undraw   (Selection      *selection);
+static void      selection_layer_draw     (Selection      *selection);
 
 static void      selection_add_point      (GdkPoint       *points[8],
                                            gint            max_npoints[8],
@@ -178,6 +180,10 @@
           selection_layer_undraw (selection);
           break;
 
+        case GIMP_SELECTION_LAYER_ON:
+          selection_layer_draw (selection);
+          break;
+
         case GIMP_SELECTION_ON:
           selection_start (selection);
           break;
@@ -366,10 +372,14 @@
 static void
 selection_layer_draw (Selection *selection)
 {
-  GimpCanvas *canvas = GIMP_CANVAS (selection->shell->canvas);
+  GimpCanvas   *canvas   = GIMP_CANVAS (selection->shell->canvas);
+  GimpImage    *image    = selection->shell->display->image;
+  GimpDrawable *drawable = gimp_image_get_active_drawable (image);
 
   if (selection->segs_layer)
-    gimp_canvas_draw_segments (canvas, GIMP_CANVAS_STYLE_LAYER_BOUNDARY,
+    gimp_canvas_draw_segments (canvas, GIMP_IS_LAYER_MASK (drawable) ?
+                               GIMP_CANVAS_STYLE_GUIDE_ACTIVE:
+                               GIMP_CANVAS_STYLE_LAYER_BOUNDARY,
                                selection->segs_layer,
                                selection->num_segs_layer);
 }
 
