diff --git a/toonz/sources/tnztools/assistants/assistantperspective.cpp b/toonz/sources/tnztools/assistants/assistantperspective.cpp
index 3913eed..3aabbe3 100644
--- a/toonz/sources/tnztools/assistants/assistantperspective.cpp
+++ b/toonz/sources/tnztools/assistants/assistantperspective.cpp
@@ -24,6 +24,7 @@ public:
   const TStringId m_idGridXY;
   const TStringId m_idGridYZ;
   const TStringId m_idGridZX;
+  const TStringId m_idShowBox;
 
 protected:
   TAssistantPoint &m_o;
@@ -46,6 +47,7 @@ public:
     m_idGridXY("gridXY"),
     m_idGridYZ("gridYZ"),
     m_idGridZX("gridZX"),
+    m_idShowBox("showBox"),
     m_o    ( addPoint("o",     TAssistantPoint::CircleCross)                          ),
     m_x    ( addPoint("x",     TAssistantPoint::CircleFill,       TPointD(  50,  0 )) ),
     m_y    ( addPoint("y",     TAssistantPoint::CircleFill,       TPointD(   0, 50 )) ),
@@ -63,6 +65,7 @@ public:
     addProperty( new TBoolProperty(m_idGridXY.str(), getGridXY()) );
     addProperty( new TBoolProperty(m_idGridYZ.str(), getGridYZ()) );
     addProperty( new TBoolProperty(m_idGridZX.str(), getGridZX()) );
+    addProperty( new TBoolProperty(m_idShowBox.str(), getShowBox()) );
   }
 
 
@@ -78,6 +81,7 @@ public:
     setTranslation(m_idGridXY, tr("Grid XY"));
     setTranslation(m_idGridYZ, tr("Grid YZ"));
     setTranslation(m_idGridZX, tr("Grid ZX"));
+    setTranslation(m_idShowBox, tr("Show Box"));
   }
 
 
@@ -93,6 +97,8 @@ public:
     { return data()[m_idGridYZ].getBool(); }
   inline bool getGridZX() const
     { return data()[m_idGridZX].getBool(); }
+  inline bool getShowBox() const
+    { return data()[m_idShowBox].getBool(); }
 
   void onDataChanged(const TVariant &value) override {
     TAssistant::onDataChanged(value);
@@ -393,6 +399,24 @@ public:
     drawSegment(p-dx+dy, p+dx-dy, pixelSize, alpha);
   }
 
+  void drawBox(double alpha) const {
+    double pixelSize = sqrt(tglGetPixelSize2());
+    TPointD xyz;
+    fixSidePoint(xyz, m_xy.position, m_zx.position, m_vz, m_vy);
+    drawSegment(xyz, m_xy.position, pixelSize, alpha);
+    drawSegment(xyz, m_yz.position, pixelSize, alpha);
+    drawSegment(xyz, m_zx.position, pixelSize, alpha);
+    drawSegment(m_xy.position, m_x.position, pixelSize, alpha);
+    drawSegment(m_xy.position, m_y.position, pixelSize, alpha);
+    drawSegment(m_yz.position, m_y.position, pixelSize, alpha);
+    drawSegment(m_yz.position, m_z.position, pixelSize, alpha);
+    drawSegment(m_zx.position, m_z.position, pixelSize, alpha);
+    drawSegment(m_zx.position, m_x.position, pixelSize, alpha);
+    drawSegment(m_o.position, m_x.position, pixelSize, alpha);
+    drawSegment(m_o.position, m_y.position, pixelSize, alpha);
+    drawSegment(m_o.position, m_z.position, pixelSize, alpha);
+  }
+  
   void draw(TToolViewer*, bool enabled) const override {
     double pixelSize = sqrt(tglGetPixelSize2());
     double alpha = getDrawingAlpha(enabled);
@@ -411,24 +435,12 @@ public:
       drawGrid(m_vz, m_vx, m_x.position);
       drawGrid(m_vx, m_vz, m_z.position);
     }
+    if (getShowBox())
+      drawBox(alpha);
   }
 
   void drawEdit(TToolViewer *viewer) const override {
-    double pixelSize = sqrt(tglGetPixelSize2());
-    TPointD xyz;
-    fixSidePoint(xyz, m_xy.position, m_zx.position, m_vz, m_vy);
-    drawSegment(xyz, m_xy.position, pixelSize);
-    drawSegment(xyz, m_yz.position, pixelSize);
-    drawSegment(xyz, m_zx.position, pixelSize);
-    drawSegment(m_xy.position, m_x.position, pixelSize);
-    drawSegment(m_xy.position, m_y.position, pixelSize);
-    drawSegment(m_yz.position, m_y.position, pixelSize);
-    drawSegment(m_yz.position, m_z.position, pixelSize);
-    drawSegment(m_zx.position, m_z.position, pixelSize);
-    drawSegment(m_zx.position, m_x.position, pixelSize);
-    drawSegment(m_o.position, m_x.position, pixelSize);
-    drawSegment(m_o.position, m_y.position, pixelSize);
-    drawSegment(m_o.position, m_z.position, pixelSize);
+    if (!getShowBox()) drawBox(getDrawingAlpha(false));
     TAssistant::drawEdit(viewer);
   }
 };