diff --git a/data/pref.xml b/data/pref.xml
index 69ead7721..7c88725f2 100644
--- a/data/pref.xml
+++ b/data/pref.xml
@@ -280,6 +280,11 @@
       
       
     
+    
     
       
       
diff --git a/data/themes/default/theme.xml b/data/themes/default/theme.xml
index b04107ccd..288ecebbf 100644
--- a/data/themes/default/theme.xml
+++ b/data/themes/default/theme.xml
@@ -58,7 +58,6 @@
         
         
         
-        
         
         
         
diff --git a/src/app/ui/editor/editor.cpp b/src/app/ui/editor/editor.cpp
index 93e50617c..3f459b923 100644
--- a/src/app/ui/editor/editor.cpp
+++ b/src/app/ui/editor/editor.cpp
@@ -805,8 +805,12 @@ void Editor::drawSpriteUnclippedRect(ui::Graphics* g, const gfx::Rect& _rc)
       m_state->requireBrushPreview()) {
     Cel* cel = (m_layer ? m_layer->cel(m_frame): nullptr);
     if (cel) {
-      drawCelBounds(g, cel);
-      if (m_showGuidesThisCel != cel)
+      drawCelBounds(
+        g, cel,
+        color_utils::color_for_ui(m_docPref.guides.layerEdgesColor()));
+
+      if (showGuidesThisCel &&
+          m_showGuidesThisCel != cel)
         drawCelGuides(g, cel, m_showGuidesThisCel);
     }
   }
@@ -1019,10 +1023,9 @@ void Editor::drawSlices(ui::Graphics* g)
   }
 }
 
-void Editor::drawCelBounds(ui::Graphics* g, const Cel* cel)
+void Editor::drawCelBounds(ui::Graphics* g, const Cel* cel, const gfx::Color color)
 {
-  g->drawRect(SkinTheme::instance()->colors.editorLayerEdges(),
-              getCelScreenBounds(cel));
+  g->drawRect(color, getCelScreenBounds(cel));
 }
 
 void Editor::drawCelGuides(ui::Graphics* g, const Cel* cel, const Cel* mouseCel)
@@ -1034,7 +1037,10 @@ void Editor::drawCelGuides(ui::Graphics* g, const Cel* cel, const Cel* mouseCel)
   if (mouseCel) {
     scrCmpBounds = getCelScreenBounds(mouseCel);
     sprCmpBounds = mouseCel->bounds();
-    drawCelBounds(g, mouseCel);
+
+    drawCelBounds(
+      g, mouseCel,
+      color_utils::color_for_ui(m_docPref.guides.automaticGuidesColor()));
   }
   // Use whole canvas
   else {
@@ -1110,7 +1116,7 @@ void Editor::drawCelHGuide(ui::Graphics* g,
                            const gfx::Rect& scrCelBounds, const gfx::Rect& scrCmpBounds,
                            const int dottedX)
 {
-  auto color = SkinTheme::instance()->colors.editorLayerEdges();
+  auto color = color_utils::color_for_ui(m_docPref.guides.automaticGuidesColor());
   g->drawHLine(color, scrX1, scrY, scrX2 - scrX1);
 
   // Vertical guide to touch the horizontal line
@@ -1126,7 +1132,7 @@ void Editor::drawCelHGuide(ui::Graphics* g,
   auto text = base::convert_to(ABS(sprX2 - sprX1)) + "px";
   const int textW = Graphics::measureUITextLength(text, font());
   g->drawText(text,
-              gfx::rgba(255, 255, 255, 255), color,
+              color_utils::blackandwhite_neg(color), color,
               gfx::Point((scrX1+scrX2)/2-textW/2, scrY-textHeight()));
 }
 
@@ -1136,7 +1142,7 @@ void Editor::drawCelVGuide(ui::Graphics* g,
                            const gfx::Rect& scrCelBounds, const gfx::Rect& scrCmpBounds,
                            const int dottedY)
 {
-  auto color = SkinTheme::instance()->colors.editorLayerEdges();
+  auto color = color_utils::color_for_ui(m_docPref.guides.automaticGuidesColor());
   g->drawVLine(color, scrX, scrY1, scrY2 - scrY1);
 
   // Horizontal guide to touch the vertical line
@@ -1151,7 +1157,7 @@ void Editor::drawCelVGuide(ui::Graphics* g,
 
   auto text = base::convert_to(ABS(sprY2 - sprY1)) + "px";
   g->drawText(text,
-              gfx::rgba(255, 255, 255, 255), color,
+              color_utils::blackandwhite_neg(color), color,
               gfx::Point(scrX, (scrY1+scrY2)/2-textHeight()/2));
 }
 
diff --git a/src/app/ui/editor/editor.h b/src/app/ui/editor/editor.h
index b2f8273d2..360a2ebc7 100644
--- a/src/app/ui/editor/editor.h
+++ b/src/app/ui/editor/editor.h
@@ -280,7 +280,7 @@ namespace app {
     void drawGrid(ui::Graphics* g, const gfx::Rect& spriteBounds, const gfx::Rect& gridBounds,
                   const app::Color& color, int alpha);
     void drawSlices(ui::Graphics* g);
-    void drawCelBounds(ui::Graphics* g, const Cel* cel);
+    void drawCelBounds(ui::Graphics* g, const Cel* cel, const gfx::Color color);
     void drawCelGuides(ui::Graphics* g, const Cel* cel, const Cel* mouseCel);
     void drawCelHGuide(ui::Graphics* g,
                        const int sprX1, const int sprX2,
diff --git a/src/app/ui/editor/tool_loop_impl.cpp b/src/app/ui/editor/tool_loop_impl.cpp
index 79c03e6ce..96c8c8098 100644
--- a/src/app/ui/editor/tool_loop_impl.cpp
+++ b/src/app/ui/editor/tool_loop_impl.cpp
@@ -45,6 +45,7 @@
 #include "doc/palette.h"
 #include "doc/palette_picks.h"
 #include "doc/remap.h"
+#include "doc/slice.h"
 #include "doc/sprite.h"
 #include "render/render.h"
 #include "ui/ui.h"
@@ -467,6 +468,13 @@ public:
     m_transaction.execute(new cmd::SetMask(m_document, newMask));
   }
   void addSlice(Slice* newSlice) override {
+    auto color = m_docPref.guides.defaultSliceColor();
+    newSlice->userData().setColor(
+      doc::rgba(color.getRed(),
+                color.getGreen(),
+                color.getBlue(),
+                color.getAlpha()));
+
     m_transaction.execute(new cmd::AddSlice(m_sprite, newSlice));
   }
   gfx::Point getMaskOrigin() override { return m_maskOrigin; }
diff --git a/src/doc/slice.cpp b/src/doc/slice.cpp
index 4338ca554..1fa10d62c 100644
--- a/src/doc/slice.cpp
+++ b/src/doc/slice.cpp
@@ -39,8 +39,6 @@ Slice::Slice()
   , m_owner(nullptr)
   , m_name("Slice")
 {
-  // TODO default color should be configurable
-  userData().setColor(doc::rgba(0, 0, 255, 255));
 }
 
 Slice::~Slice()