diff --git a/toonz/sources/include/tools/tool.h b/toonz/sources/include/tools/tool.h
index 2be17c8..b88b32d 100644
--- a/toonz/sources/include/tools/tool.h
+++ b/toonz/sources/include/tools/tool.h
@@ -301,14 +301,18 @@ public:
   };
 
   enum ToolHints  //!  Misc flags related with tool
-  { HintNone              = 0,
-    HintAssistants        = 1 << 0, //!< Draw asistants when tool active
-    HintGuidelines        = 1 << 1, //!< Draw asistant guidelines
-    HintAssistantsEnabled = 1 << 2, //!< Tool will use assisnats
+  { HintNone                 = 0,
+    HintAssistants           = 1 << 0, //!< Draw asistants when tool active
+    HintAssistantsGuidelines = 1 << 1, //!< Draw asistant guidelines
+    HintAssistantsEnabled    = 1 << 2, //!< Mark active assistants
+    HintReplicators          = 1 << 3, //!< Draw replicators
+    HintReplicatorsEnabled   = 1 << 4, //!< Mark active replicators
     
     HintAssistantsAll     = HintAssistants
-                          | HintGuidelines
+                          | HintAssistantsGuidelines
                           | HintAssistantsEnabled,
+    HintReplicatorsAll    = HintReplicators
+                          | HintReplicatorsEnabled,
   };
 
 public:
diff --git a/toonz/sources/tnztools/editassistantstool.cpp b/toonz/sources/tnztools/editassistantstool.cpp
index ce4bb8d..edacf7a 100644
--- a/toonz/sources/tnztools/editassistantstool.cpp
+++ b/toonz/sources/tnztools/editassistantstool.cpp
@@ -5,6 +5,7 @@
 #include <tools/toolhandle.h>
 #include <tools/cursors.h>
 #include <tools/assistant.h>
+#include <tools/replicator.h>
 #include <tools/inputmanager.h>
 
 // TnzLib includes
@@ -201,7 +202,7 @@ public:
   ToolType getToolType() const override
     { return TTool::LevelWriteTool; }
   unsigned int getToolHints() const override
-    { return TTool::getToolHints() & ~HintAssistantsAll; }
+    { return TTool::getToolHints() & ~(HintAssistantsAll | HintReplicatorsAll); }
   int getCursorId() const override
     { return ToolCursor::StrokeSelectCursor; }
   void onImageChanged() override {
@@ -607,6 +608,8 @@ public:
             m_currentGuidelines );
       }
     
+    TImage *img = getImage(false);
+    
     // draw assistans and guidelines from other layers
     TAssistant::scanAssistants(
       this,          // tool
@@ -616,7 +619,16 @@ public:
       false,         // enabled only
       false,         // mark enabled
       true,          // draw guidelines
-      nullptr );     // skip image
+      img );         // skip image
+    
+    // draw replicators from other layers
+    TReplicator::scanReplicators(
+      this,          // tool
+      nullptr,       // out modifiers
+      true,          // draw
+      false,         // enabled only
+      false,         // mark enabled
+      img );         // skip image
   }
 };
 
diff --git a/toonz/sources/tnztools/fullcolorbrushtool.h b/toonz/sources/tnztools/fullcolorbrushtool.h
index dd9b831..3924388 100644
--- a/toonz/sources/tnztools/fullcolorbrushtool.h
+++ b/toonz/sources/tnztools/fullcolorbrushtool.h
@@ -62,7 +62,7 @@ public:
   ToolType getToolType() const override
     { return TTool::LevelWriteTool; }
   unsigned int getToolHints() const override
-    { return TTool::getToolHints() & ~HintAssistantsAll; }
+    { return (TTool::getToolHints() & ~HintAssistantsAll) | HintReplicatorsEnabled; }
 
   ToolOptionsBox *createOptionsBox() override;
 
diff --git a/toonz/sources/tnztools/tool.cpp b/toonz/sources/tnztools/tool.cpp
index 0f730fe..f760950 100644
--- a/toonz/sources/tnztools/tool.cpp
+++ b/toonz/sources/tnztools/tool.cpp
@@ -180,7 +180,7 @@ TTool::TTool(std::string name)
 //-------------------------------------------------------------------
 
 unsigned int TTool::getToolHints() const
-  { return HintAssistants | HintGuidelines; }
+  { return HintAssistants | HintAssistantsGuidelines | HintReplicators; }
 
 //-------------------------------------------------------------------
 
diff --git a/toonz/sources/tnztools/toonzrasterbrushtool.h b/toonz/sources/tnztools/toonzrasterbrushtool.h
index 65bc306..826cb59 100644
--- a/toonz/sources/tnztools/toonzrasterbrushtool.h
+++ b/toonz/sources/tnztools/toonzrasterbrushtool.h
@@ -109,7 +109,7 @@ public:
   ToolType getToolType() const override
     { return TTool::LevelWriteTool; }
   unsigned int getToolHints() const override
-    { return TTool::getToolHints() & ~HintAssistantsAll; }
+    { return (TTool::getToolHints() & ~HintAssistantsAll) | HintReplicatorsEnabled; }
   
   ToolOptionsBox *createOptionsBox() override;
 
diff --git a/toonz/sources/tnztools/toonzvectorbrushtool.h b/toonz/sources/tnztools/toonzvectorbrushtool.h
index 2aff0b4..ae12706 100644
--- a/toonz/sources/tnztools/toonzvectorbrushtool.h
+++ b/toonz/sources/tnztools/toonzvectorbrushtool.h
@@ -100,7 +100,7 @@ public:
   ToolType getToolType() const override
     { return TTool::LevelWriteTool; }
   unsigned int getToolHints() const override
-    { return TTool::getToolHints() & ~HintAssistantsAll; }
+    { return (TTool::getToolHints() & ~HintAssistantsAll) | HintReplicatorsEnabled; }
 
   ToolOptionsBox *createOptionsBox() override;
 
diff --git a/toonz/sources/toonz/sceneviewer.cpp b/toonz/sources/toonz/sceneviewer.cpp
index 7b8dab6..bb1b835 100644
--- a/toonz/sources/toonz/sceneviewer.cpp
+++ b/toonz/sources/toonz/sceneviewer.cpp
@@ -24,6 +24,7 @@
 #include "tools/toolcommandids.h"
 #include "tools/toolutils.h"
 #include "tools/assistant.h"
+#include "tools/replicator.h"
 
 // TnzQt includes
 #include "toonzqt/icongenerator.h"
@@ -1833,19 +1834,31 @@ void SceneViewer::drawOverlay() {
       glScaled(m_dpiScale.x, m_dpiScale.y, 1);
     m_pixelSize = sqrt(tglGetPixelSize2()) * getDevPixRatio();
     
+    unsigned int hints = tool->getToolHints();
+
     // draw assistans and guidelines
     m_toolHasAssistants = false;
-    unsigned int hints = tool->getToolHints();
     if (hints & TTool::HintAssistantsAll) {
       m_toolHasAssistants = TAssistant::scanAssistants(
-        tool,                                 // tool
-        &m_toolPos, 1,                        // pointer positions
-        nullptr,                              // out guidelines
-        true,                                 // draw
-        false,                                // enabled only
-        hints & TTool::HintAssistantsEnabled, // mark enabled
-        true,                                 // draw guidelines
-        nullptr );                            // skip image
+        tool,                                  // tool
+        &m_toolPos, 1,                         // pointer positions
+        nullptr,                               // out guidelines
+        true,                                  // draw
+        false,                                 // enabled only
+        hints & TTool::HintAssistantsEnabled,  // mark enabled
+        true,                                  // draw guidelines
+        nullptr );                             // skip image
+    }
+    
+    // draw replicators
+    if (hints & TTool::HintReplicatorsAll) {
+      TReplicator::scanReplicators(
+        tool,                                  // tool
+        nullptr,                               // out modifiers
+        true,                                  // draw
+        false,                                 // enabled only
+        hints & TTool::HintReplicatorsEnabled, // mark enabled
+        nullptr );                             // skip image
     }
     
     // draw tool
diff --git a/toonz/sources/toonz/sceneviewerevents.cpp b/toonz/sources/toonz/sceneviewerevents.cpp
index d0a46dd..cc4aa59 100644
--- a/toonz/sources/toonz/sceneviewerevents.cpp
+++ b/toonz/sources/toonz/sceneviewerevents.cpp
@@ -657,7 +657,7 @@ void SceneViewer::onMove(const TMouseEvent &event) {
     if (!cursorSet) setToolCursor(this, tool->getCursorId());
 
     if ( m_toolHasAssistants
-      && (tool->getToolHints() & TTool::HintGuidelines)
+      && (tool->getToolHints() & TTool::HintAssistantsGuidelines)
       && !areAlmostEqual(m_toolPos, pos) )
         invalidateAll();
     m_toolPos = pos;