diff --git a/toonz/sources/tnztools/assistants/replicatoraffine.cpp b/toonz/sources/tnztools/assistants/replicatoraffine.cpp
index af88571..876ce6f 100644
--- a/toonz/sources/tnztools/assistants/replicatoraffine.cpp
+++ b/toonz/sources/tnztools/assistants/replicatoraffine.cpp
@@ -114,16 +114,16 @@ protected:
   }
 
 
-  TAffine getAffine() const {
+  TAffine getAffine(const TAffine &toTool = TAffine()) const {
     TPointD c, x, y;
-    c = m_center0.position;
-    x = m_a0.position - c;
-    y = m_b0.position - c;
+    c = toTool*m_center0.position;
+    x = toTool*m_a0.position - c;
+    y = toTool*m_b0.position - c;
     TAffine t0( x.x, y.x, c.x,
                 x.y, y.y, c.y );
-    c = m_center1.position;
-    x = m_a1.position - c;
-    y = m_b1.position - c;
+    c = toTool*m_center1.position;
+    x = toTool*m_a1.position - c;
+    y = toTool*m_b1.position - c;
     TAffine t1( x.x, y.x, c.x,
                 x.y, y.y, c.y );
     return t1*t0.inv();
@@ -238,10 +238,10 @@ public:
   
   
   void getModifiers(
-    const TAffine&,
+    const TAffine &toTool,
     TInputModifier::List &outModifiers ) const override
   {
-    TAffine aff = getAffine();
+    TAffine aff = getAffine(toTool);
     double pressure = getPressure();
     double pressureInv = fabs(pressure) > TConsts::epsilon ? 1/pressure : 0;
     
diff --git a/toonz/sources/tnztools/fullcolorbrushtool.cpp b/toonz/sources/tnztools/fullcolorbrushtool.cpp
index d764b82..bf62676 100644
--- a/toonz/sources/tnztools/fullcolorbrushtool.cpp
+++ b/toonz/sources/tnztools/fullcolorbrushtool.cpp
@@ -8,6 +8,7 @@
 #include "tools/toolutils.h"
 #include "tools/toolhandle.h"
 #include "tools/tooloptions.h"
+#include "tools/replicator.h"
 
 #include "mypainttoonzbrush.h"
 
@@ -210,6 +211,7 @@ void FullColorBrushTool::onActivate() {
   if (!m_notifier) m_notifier = new FullColorBrushToolNotifier(this);
   m_notifier->onActivate();
 
+  updateModifiers();
   updateCurrentStyle();
 
   if (m_firstTime) {
@@ -304,10 +306,14 @@ bool FullColorBrushTool::askWrite(const TRect &rect) {
 
 //--------------------------------------------------------------------------------------------------
 
-bool FullColorBrushTool::preLeftButtonDown() {
+void FullColorBrushTool::updateModifiers() {
   m_modifierAssistants->magnetism = m_assistants.getValue() ? 1 : 0;
   m_inputmanager.drawPreview      = false; //!m_modifierAssistants->drawOnly;
 
+  m_modifierReplicate.clear();
+  if (m_assistants.getValue())
+    TReplicator::scanReplicators(this, &m_modifierReplicate, false, true, false, nullptr);
+  
   m_inputmanager.clearModifiers();
   m_inputmanager.addModifier(TInputModifierP(m_modifierTangents.getPointer()));
   m_inputmanager.addModifier(
@@ -315,9 +321,16 @@ bool FullColorBrushTool::preLeftButtonDown() {
 #ifndef NDEBUG
   m_inputmanager.addModifier(TInputModifierP(m_modifierTest.getPointer()));
 #endif
+  for(TInputModifier::List::iterator i = m_modifierReplicate.begin(); i != m_modifierReplicate.end(); ++i)
+    m_inputmanager.addModifier(*i);
   m_inputmanager.addModifier(
       TInputModifierP(m_modifierSegmentation.getPointer()));
+}
 
+//--------------------------------------------------------------------------------------------------
+
+bool FullColorBrushTool::preLeftButtonDown() {
+  updateModifiers();
   touchImage();
 
   if (m_isFrameCreated) {
@@ -347,6 +360,8 @@ void FullColorBrushTool::handleMouseEvent(MouseEventType type,
     m_inputmanager.addModifier(TInputModifierP(m_modifierLine.getPointer()));
     m_inputmanager.addModifier(
         TInputModifierP(m_modifierAssistants.getPointer()));
+    for(TInputModifier::List::iterator i = m_modifierReplicate.begin(); i != m_modifierReplicate.end(); ++i)
+      m_inputmanager.addModifier(*i);
     m_inputmanager.addModifier(
         TInputModifierP(m_modifierSegmentation.getPointer()));
     m_inputmanager.drawPreview = true;
diff --git a/toonz/sources/tnztools/fullcolorbrushtool.h b/toonz/sources/tnztools/fullcolorbrushtool.h
index 3924388..46b57a7 100644
--- a/toonz/sources/tnztools/fullcolorbrushtool.h
+++ b/toonz/sources/tnztools/fullcolorbrushtool.h
@@ -61,8 +61,10 @@ public:
 
   ToolType getToolType() const override
     { return TTool::LevelWriteTool; }
-  unsigned int getToolHints() const override
-    { return (TTool::getToolHints() & ~HintAssistantsAll) | HintReplicatorsEnabled; }
+  unsigned int getToolHints() const override {
+    unsigned int h = TTool::getToolHints() & ~HintAssistantsAll;
+    return m_assistants.getValue() ? h | HintReplicatorsEnabled : h;
+  }
 
   ToolOptionsBox *createOptionsBox() override;
 
@@ -115,6 +117,8 @@ public:
   TMyPaintBrushStyle *getBrushStyle();
 
 private:
+  void updateModifiers();
+  
   enum MouseEventType { ME_DOWN, ME_DRAG, ME_UP, ME_MOVE };
   void handleMouseEvent(MouseEventType type, const TPointD &pos,
                         const TMouseEvent &e);
@@ -128,6 +132,7 @@ protected:
   TSmartPointerT<TModifierTangents> m_modifierTangents;
   TSmartPointerT<TModifierAssistants> m_modifierAssistants;
   TSmartPointerT<TModifierSegmentation> m_modifierSegmentation;
+  TInputModifier::List m_modifierReplicate;
 
   TPropertyGroup m_prop;