diff --git a/toonz/sources/tnztools/toonzrasterbrushtool.cpp b/toonz/sources/tnztools/toonzrasterbrushtool.cpp
index 86e1cc1..7b0bcd1 100644
--- a/toonz/sources/tnztools/toonzrasterbrushtool.cpp
+++ b/toonz/sources/tnztools/toonzrasterbrushtool.cpp
@@ -1207,7 +1207,7 @@ void ToonzRasterBrushTool::onDeactivate() {
   /*---
    * ドラッグ中にツールが切り替わった場合に備え、onDeactivateにもMouseReleaseと同じ処理を行う
    * ---*/
-  if (m_tileSaver) {
+  if (m_painting.tileSaver) {
     bool isValid = m_enabled && m_painting.active;
     m_enabled = false;
     m_painting.active = false;
@@ -1231,7 +1231,7 @@ bool ToonzRasterBrushTool::askWrite(const TRect &rect) {
   m_strokeRect += rect;
   m_strokeSegmentRect += rect;
   updateWorkAndBackupRasters(rect);
-  m_tileSaver->save(rect);
+  m_painting.tileSaver->save(rect);
   return true;
 }
 
@@ -1296,8 +1296,8 @@ void ToonzRasterBrushTool::leftButtonDown(const TPointD &pos,
   TRasterCM32P ras = ri->getRaster();
   if (ras) {
     TPointD rasCenter = ras->getCenterD();
-    m_tileSet         = new TTileSetCM32(ras->getSize());
-    m_tileSaver       = new TTileSaverCM32(ras, m_tileSet);
+    m_painting.tileSet   = new TTileSetCM32(ras->getSize());
+    m_painting.tileSaver = new TTileSaverCM32(ras, m_painting.tileSet);
     double maxThick   = m_rasThickness.getValue().second;
     double thickness  = (m_pressure.getValue())
                             ? computeThickness(pressure, m_rasThickness) * 2
@@ -1378,7 +1378,7 @@ void ToonzRasterBrushTool::leftButtonDown(const TPointD &pos,
       if (drawOrder == PaletteOrder)
         m_rasterTrack->setAboveStyleIds(aboveStyleIds);
 
-      m_tileSaver->save(m_rasterTrack->getLastRect());
+      m_painting.tileSaver->save(m_rasterTrack->getLastRect());
       if (!m_painting.isStraight)
         m_rasterTrack->generateLastPieceOfStroke(m_pencil.getValue());
 
@@ -1401,7 +1401,7 @@ void ToonzRasterBrushTool::leftButtonDown(const TPointD &pos,
 
       m_strokeRect = m_bluredBrush->getBoundFromPoints(m_points);
       updateWorkAndBackupRasters(m_strokeRect);
-      m_tileSaver->save(m_strokeRect);
+      m_painting.tileSaver->save(m_strokeRect);
       m_bluredBrush->addPoint(point, 1);
       if (!m_painting.isStraight)
         m_bluredBrush->updateDrawing(ri->getRaster(), m_backupRas, m_strokeRect,
@@ -1533,7 +1533,7 @@ void ToonzRasterBrushTool::leftButtonDrag(const TPointD &pos,
     for (size_t i = 0; i < pts.size(); ++i) {
       const TThickPoint &thickPoint = pts[i];
       m_rasterTrack->add(thickPoint);
-      m_tileSaver->save(m_rasterTrack->getLastRect());
+      m_painting.tileSaver->save(m_rasterTrack->getLastRect());
       m_rasterTrack->generateLastPieceOfStroke(m_pencil.getValue());
       std::vector<TThickPoint> brushPoints = m_rasterTrack->getPointsSequence();
       int m                                = (int)brushPoints.size();
@@ -1577,7 +1577,7 @@ void ToonzRasterBrushTool::leftButtonDrag(const TPointD &pos,
         points.push_back(mid);
         bbox = m_bluredBrush->getBoundFromPoints(points);
         updateWorkAndBackupRasters(bbox + m_lastRect);
-        m_tileSaver->save(bbox);
+        m_painting.tileSaver->save(bbox);
         m_bluredBrush->addArc(pa, (mid + pa) * 0.5, mid, 1, 1);
         m_lastRect += bbox;
       } else {
@@ -1586,7 +1586,7 @@ void ToonzRasterBrushTool::leftButtonDrag(const TPointD &pos,
         points.push_back(mid);
         bbox = m_bluredBrush->getBoundFromPoints(points);
         updateWorkAndBackupRasters(bbox + m_lastRect);
-        m_tileSaver->save(bbox);
+        m_painting.tileSaver->save(bbox);
         m_bluredBrush->addArc(m_points[m - 4], old, mid, 1, 1);
         m_lastRect += bbox;
       }
@@ -1693,10 +1693,10 @@ void ToonzRasterBrushTool::finishRasterBrush(const TPointD &pos,
     m_lastRect.empty();
     m_workRas->unlock();
 
-    if (m_tileSet->getTileCount() > 0) {
+    if (m_painting.tileSet->getTileCount() > 0) {
       TRasterCM32P subras = ras->extract(m_strokeRect)->clone();
       TUndoManager::manager()->add(new MyPaintBrushUndo(
-          m_tileSet, simLevel.getPointer(), frameId, m_isFrameCreated,
+          m_painting.tileSet, simLevel.getPointer(), frameId, m_isFrameCreated,
           m_isLevelCreated, subras, m_strokeRect.getP00()));
     }
 
@@ -1728,7 +1728,7 @@ void ToonzRasterBrushTool::finishRasterBrush(const TPointD &pos,
     for (size_t i = 0; i < pts.size(); ++i) {
       const TThickPoint &thickPoint = pts[i];
       m_rasterTrack->add(thickPoint);
-      m_tileSaver->save(m_rasterTrack->getLastRect(m_painting.isStraight));
+      m_painting.tileSaver->save(m_rasterTrack->getLastRect(m_painting.isStraight));
       m_rasterTrack->generateLastPieceOfStroke(m_pencil.getValue(), true,
                                                m_painting.isStraight);
 
@@ -1751,9 +1751,9 @@ void ToonzRasterBrushTool::finishRasterBrush(const TPointD &pos,
     }
     invalidate(invalidateRect.enlarge(2));
 
-    if (m_tileSet->getTileCount() > 0) {
+    if (m_painting.tileSet->getTileCount() > 0) {
       TUndoManager::manager()->add(new RasterBrushUndo(
-          m_tileSet, m_rasterTrack->getPointsSequence(),
+          m_painting.tileSet, m_rasterTrack->getPointsSequence(),
           m_rasterTrack->getStyleId(), m_rasterTrack->isSelective(),
           simLevel.getPointer(), frameId, m_pencil.getValue(), m_isFrameCreated,
           m_isLevelCreated, m_rasterTrack->isPaletteOrder(),
@@ -1799,7 +1799,7 @@ void ToonzRasterBrushTool::finishRasterBrush(const TPointD &pos,
           points.push_back(mid);
           bbox = m_bluredBrush->getBoundFromPoints(points);
           updateWorkAndBackupRasters(bbox + m_lastRect);
-          m_tileSaver->save(bbox);
+          m_painting.tileSaver->save(bbox);
           m_bluredBrush->addArc(pa, (mid + pa) * 0.5, mid, 1, 1);
           m_lastRect += bbox;
         } else {
@@ -1808,7 +1808,7 @@ void ToonzRasterBrushTool::finishRasterBrush(const TPointD &pos,
           points.push_back(mid);
           bbox = m_bluredBrush->getBoundFromPoints(points);
           updateWorkAndBackupRasters(bbox + m_lastRect);
-          m_tileSaver->save(bbox);
+          m_painting.tileSaver->save(bbox);
           m_bluredBrush->addArc(m_points[m - 4], old, mid, 1, 1);
           m_lastRect += bbox;
         }
@@ -1843,7 +1843,7 @@ void ToonzRasterBrushTool::finishRasterBrush(const TPointD &pos,
       }
       TRect bbox = m_bluredBrush->getBoundFromPoints(points);
       updateWorkAndBackupRasters(bbox);
-      m_tileSaver->save(bbox);
+      m_painting.tileSaver->save(bbox);
       m_bluredBrush->addArc(points[0], points[1], points[2], 1, 1);
       m_bluredBrush->updateDrawing(ti->getRaster(), m_backupRas, bbox,
                                    m_painting.styleId, m_drawOrder.getIndex(),
@@ -1860,17 +1860,16 @@ void ToonzRasterBrushTool::finishRasterBrush(const TPointD &pos,
     delete m_bluredBrush;
     m_bluredBrush = 0;
 
-    if (m_tileSet->getTileCount() > 0) {
+    if (m_painting.tileSet->getTileCount() > 0) {
       TUndoManager::manager()->add(new RasterBluredBrushUndo(
-          m_tileSet, m_points, m_painting.styleId, (DrawOrder)m_drawOrder.getIndex(),
+          m_painting.tileSet, m_points, m_painting.styleId, (DrawOrder)m_drawOrder.getIndex(),
           m_modifierLockAlpha.getValue(), simLevel.getPointer(), frameId,
           m_rasThickness.getValue().second, m_hardness.getValue() * 0.01,
           m_isFrameCreated, m_isLevelCreated, m_painting.isStraight));
     }
   }
-  delete m_tileSaver;
-
-  m_tileSaver = 0;
+  delete m_painting.tileSaver;
+  m_painting.tileSaver = 0;
 
   /*-- FIdを指定して、描画中にフレームが動いても、
     描画開始時のFidのサムネイルが更新されるようにする。--*/
@@ -2271,7 +2270,7 @@ bool ToonzRasterBrushTool::isPencilModeActive() {
 
 void ToonzRasterBrushTool::onColorStyleChanged() {
   // in case the style switched while drawing
-  if (m_tileSaver) {
+  if (m_painting.tileSaver) {
     bool isValid = m_enabled && m_painting.active;
     m_enabled    = false;
     if (isValid) {
diff --git a/toonz/sources/tnztools/toonzrasterbrushtool.h b/toonz/sources/tnztools/toonzrasterbrushtool.h
index 5089398..ee0d933 100644
--- a/toonz/sources/tnztools/toonzrasterbrushtool.h
+++ b/toonz/sources/tnztools/toonzrasterbrushtool.h
@@ -177,9 +177,15 @@ protected:
   } m_stroke;
   
   struct Painting {
+    // initial painting input
     bool active = false;
     int styleId = 0;
     
+    // common variables
+    TTileSetCM32 *tileSet = nullptr;
+    TTileSaverCM32 *tileSaver = nullptr;
+    
+    // straight variables
     bool isStraight = false;
     TPointD firstPoint;
     TPointD lastPoint;
@@ -199,8 +205,6 @@ protected:
   TBoolProperty m_modifierLockAlpha;
 
   RasterStrokeGenerator *m_rasterTrack;
-  TTileSetCM32 *m_tileSet;
-  TTileSaverCM32 *m_tileSaver;
   double m_minThick, m_maxThick;
 
   int m_targetType;