diff --git a/toonz/sources/tnztools/fullcolorbrushtool.cpp b/toonz/sources/tnztools/fullcolorbrushtool.cpp
index 8b4b7d2..a2f3c28 100644
--- a/toonz/sources/tnztools/fullcolorbrushtool.cpp
+++ b/toonz/sources/tnztools/fullcolorbrushtool.cpp
@@ -306,7 +306,7 @@ bool FullColorBrushTool::askWrite(const TRect &rect) {
 
 bool FullColorBrushTool::preLeftButtonDown() {
   m_modifierAssistants->drawOnly = !FullcolorAssistants;
-  m_inputmanager.drawPreview     = false;  //! m_modifierAssistants->drawOnly;
+  m_inputmanager.drawPreview     = false; //!m_modifierAssistants->drawOnly;
 
   m_inputmanager.clearModifiers();
   m_inputmanager.addModifier(TInputModifierP(m_modifierTangents.getPointer()));
diff --git a/toonz/sources/tnztools/toonzrasterbrushtool.cpp b/toonz/sources/tnztools/toonzrasterbrushtool.cpp
index 488a77b..1025128 100644
--- a/toonz/sources/tnztools/toonzrasterbrushtool.cpp
+++ b/toonz/sources/tnztools/toonzrasterbrushtool.cpp
@@ -55,6 +55,7 @@ TEnv::DoubleVar RasterBrushHardness("RasterBrushHardness", 100);
 TEnv::DoubleVar RasterBrushModifierSize("RasterBrushModifierSize", 0);
 TEnv::StringVar RasterBrushPreset("RasterBrushPreset", "<custom>");
 TEnv::IntVar BrushLockAlpha("InknpaintBrushLockAlpha", 0);
+TEnv::IntVar RasterBrushAssistants("RasterBrushAssistants", 0);
 
 //-------------------------------------------------------------------
 #define CUSTOM_WSTR L"<custom>"
@@ -399,19 +400,6 @@ namespace {
 
 //-------------------------------------------------------------------
 
-void addStrokeToImage(TTool::Application *application, const TVectorImageP &vi,
-                      TStroke *stroke, bool breakAngles, bool frameCreated,
-                      bool levelCreated, TXshSimpleLevel *sLevel = NULL,
-                      TFrameId id = TFrameId::NO_FRAME) {
-  QMutexLocker lock(vi->getMutex());
-  addStroke(application, vi.getPointer(), stroke, breakAngles, frameCreated,
-            levelCreated, sLevel, id);
-  // la notifica viene gia fatta da addStroke!
-  // getApplication()->getCurrentTool()->getTool()->notifyImageChanged();
-}
-
-//---------------------------------------------------------------------------------------------------------
-
 enum DrawOrder { OverAll = 0, UnderAll, PaletteOrder };
 
 void getAboveStyleIdSet(int styleId, TPaletteP palette,
@@ -630,15 +618,6 @@ double computeThickness(double pressure, const TDoublePairProperty &property) {
   return (thick0 + (thick1 - thick0) * t) * 0.5;
 }
 
-//---------------------------------------------------------------------------------------------------------
-
-int computeThickness(double pressure, const TIntPairProperty &property) {
-  double t   = pressure * pressure * pressure;
-  int thick0 = property.getValue().first;
-  int thick1 = property.getValue().second;
-  return tround(thick0 + (thick1 - thick0) * t);
-}
-
 }  // namespace
 
 //--------------------------------------------------------------------------------------------------
@@ -877,6 +856,7 @@ ToonzRasterBrushTool::ToonzRasterBrushTool(std::string name, int targetType)
     , m_pressure("Pressure", true)
     , m_modifierSize("ModifierSize", -3, 3, 0, true)
     , m_modifierLockAlpha("Lock Alpha", false)
+    , m_assistants("Assistants", true)
     , m_targetType(targetType)
     , m_enabled(false)
     , m_isPrompting(false)
@@ -895,6 +875,7 @@ ToonzRasterBrushTool::ToonzRasterBrushTool(std::string name, int targetType)
   m_prop[0].bind(m_modifierSize);
   m_prop[0].bind(m_modifierLockAlpha);
   m_prop[0].bind(m_pencil);
+  m_prop[0].bind(m_assistants);
   m_pencil.setId("PencilMode");
 
   m_drawOrder.addValue(L"Over All");
@@ -1118,6 +1099,7 @@ void ToonzRasterBrushTool::updateTranslation() {
   m_pencil.setQStringName(tr("Pencil"));
   m_pressure.setQStringName(tr("Pressure"));
   m_modifierLockAlpha.setQStringName(tr("Lock Alpha"));
+  m_assistants.setQStringName(tr("Assistants"));
 }
 
 //---------------------------------------------------------------------------------------------------
@@ -1174,8 +1156,8 @@ bool ToonzRasterBrushTool::askWrite(const TRect &rect) {
 
 bool ToonzRasterBrushTool::preLeftButtonDown() {
   int smoothRadius = (int)round(m_smooth.getValue());
-  m_modifierAssistants->drawOnly = true;
-  m_inputmanager.drawPreview     = !m_modifierAssistants->drawOnly;
+  m_modifierAssistants->drawOnly = !RasterBrushAssistants;
+  m_inputmanager.drawPreview     = false; //!m_modifierAssistants->drawOnly;
 
   m_inputmanager.clearModifiers();
   m_inputmanager.addModifier(TInputModifierP(m_modifierTangents.getPointer()));
@@ -1774,6 +1756,7 @@ bool ToonzRasterBrushTool::onPropertyChanged(std::string propertyName) {
   RasterBrushHardness      = m_hardness.getValue();
   RasterBrushModifierSize  = m_modifierSize.getValue();
   BrushLockAlpha           = m_modifierLockAlpha.getValue();
+  RasterBrushAssistants    = m_assistants.getValue();
 
   // Recalculate/reset based on changed settings
   if (propertyName == m_rasThickness.getName()) {
@@ -1781,8 +1764,6 @@ bool ToonzRasterBrushTool::onPropertyChanged(std::string propertyName) {
     m_maxThick = m_rasThickness.getValue().second;
   }
 
-  if (propertyName == m_hardness.getName()) setWorkAndBackupImages();
-
   if (propertyName == m_hardness.getName() ||
       propertyName == m_rasThickness.getName()) {
     m_brushPad = getBrushPad(m_rasThickness.getValue().second,
@@ -1845,13 +1826,12 @@ void ToonzRasterBrushTool::loadPreset() {
     m_pressure.setValue(preset.m_pressure);
     m_modifierSize.setValue(preset.m_modifierSize);
     m_modifierLockAlpha.setValue(preset.m_modifierLockAlpha);
+    m_assistants.setValue(preset.m_assistants);
 
     // Recalculate based on updated presets
     m_minThick = m_rasThickness.getValue().first;
     m_maxThick = m_rasThickness.getValue().second;
 
-    setWorkAndBackupImages();
-
     m_brushPad = ToolUtils::getBrushPad(preset.m_max, preset.m_hardness * 0.01);
   } catch (...) {
   }
@@ -1873,6 +1853,7 @@ void ToonzRasterBrushTool::addPreset(QString name) {
   preset.m_pressure          = m_pressure.getValue();
   preset.m_modifierSize      = m_modifierSize.getValue();
   preset.m_modifierLockAlpha = m_modifierLockAlpha.getValue();
+  preset.m_assistants        = m_assistants.getValue();
 
   // Pass the preset to the manager
   m_presetsManager.addPreset(preset);
@@ -1911,13 +1892,12 @@ void ToonzRasterBrushTool::loadLastBrush() {
   m_smooth.setValue(BrushSmooth);
   m_modifierSize.setValue(RasterBrushModifierSize);
   m_modifierLockAlpha.setValue(BrushLockAlpha ? 1 : 0);
+  m_assistants.setValue(RasterBrushAssistants ? 1 : 0);
 
   // Recalculate based on prior values
   m_minThick = m_rasThickness.getValue().first;
   m_maxThick = m_rasThickness.getValue().second;
 
-  setWorkAndBackupImages();
-
   m_brushPad = getBrushPad(m_rasThickness.getValue().second,
                            m_hardness.getValue() * 0.01);
 }
@@ -1939,7 +1919,6 @@ void ToonzRasterBrushTool::onColorStyleChanged() {
   TMyPaintBrushStyle *mpbs =
       dynamic_cast<TMyPaintBrushStyle *>(app->getCurrentLevelStyle());
   m_isMyPaintStyleSelected = (mpbs) ? true : false;
-  setWorkAndBackupImages();
   getApplication()->getCurrentTool()->notifyToolChanged();
 }
 
@@ -2011,8 +1990,8 @@ BrushData::BrushData()
     , m_opacityMax(0.0)
     , m_pencil(false)
     , m_pressure(false)
-    , m_modifierSize(0.0)
     , m_drawOrder(0)
+    , m_modifierSize(0.0)
     , m_modifierOpacity(0.0)
     , m_modifierEraser(0.0)
     , m_modifierLockAlpha(0.0)
diff --git a/toonz/sources/tnztools/toonzrasterbrushtool.h b/toonz/sources/tnztools/toonzrasterbrushtool.h
index 47cfa07..681230c 100644
--- a/toonz/sources/tnztools/toonzrasterbrushtool.h
+++ b/toonz/sources/tnztools/toonzrasterbrushtool.h
@@ -291,6 +291,7 @@ protected:
   TBoolProperty m_pressure;
   TDoubleProperty m_modifierSize;
   TBoolProperty m_modifierLockAlpha;
+  TBoolProperty m_assistants;
 
   double m_minThick, m_maxThick;