diff --git a/agui2/src/MainWindow.cpp b/agui2/src/MainWindow.cpp
index 94a0f4a78c967ad859c6097f002c1f5ff45dc178..5c28d6aea47d90a2b68c88799963e6aacfd01c1e 100644
--- a/agui2/src/MainWindow.cpp
+++ b/agui2/src/MainWindow.cpp
@@ -44,9 +44,7 @@ MainWindow::MainWindow()
 
     this->setupMenu();
 
-    this->scene->addItem(new InputGraphicsBox(std::make_unique<InputModelBox>(), {0, 200}));
-    this->outputBox = new GraphicsBox(std::make_unique<OutputModelBox>(), {400, 200});;
-    this->scene->addItem(outputBox);
+    this->clearScene();
 }
 
 void MainWindow::displayError(const QString& text) const {
@@ -212,8 +210,7 @@ void MainWindow::on_actionOpen_triggered() {
     }
     catch (const std::exception& e) {
         QMessageBox::critical(this, "Error", e.what());
-        this->scene->clear();
-        this->outputBox = nullptr;
+        this->clearScene();
     }
 }
 
@@ -282,3 +279,17 @@ void MainWindow::on_actionSave_triggered() {
     stream << QString::fromStdString(data.dump(4));
     file.close();
 }
+
+void MainWindow::on_actionClear_triggered() {
+    this->clearScene();
+}
+
+void MainWindow::clearScene() {
+    ui->graphicsView->setScene(nullptr);
+    this->scene.reset();
+    this->scene = std::make_unique<GraphicsScene>(this);
+    ui->graphicsView->setScene(this->scene.get());
+    this->scene->addItem(new InputGraphicsBox(std::make_unique<InputModelBox>(), {0, 200}));
+    this->outputBox = new GraphicsBox(std::make_unique<OutputModelBox>(), {400, 200});;
+    this->scene->addItem(outputBox);
+}
diff --git a/agui2/src/MainWindow.hpp b/agui2/src/MainWindow.hpp
index 7b7b10181cdd0379acff262549e39bf68d487b23..75366212950cd5d1971a9a1de3ae1d8c6f453f5f 100644
--- a/agui2/src/MainWindow.hpp
+++ b/agui2/src/MainWindow.hpp
@@ -24,6 +24,8 @@ public:
     static MainWindow* getInstance();
 
 private:
+    void clearScene();
+
     void setupMenu();
 
     void displayError(const QString& text) const;
@@ -35,6 +37,7 @@ private slots:
     void on_RunBtn_clicked();
     void on_actionOpen_triggered();
     void on_actionSave_triggered();
+    void on_actionClear_triggered();
 
 public:
     static const std::string ADD_INPUT_CURSOR_DATA;
diff --git a/agui2/src/MainWindow.ui b/agui2/src/MainWindow.ui
index 8db01826da9bb2e01278eaf8a040f7aa0cdd1b04..9077944da52619867eb03e71b61e2581ab64073a 100644
--- a/agui2/src/MainWindow.ui
+++ b/agui2/src/MainWindow.ui
@@ -77,6 +77,7 @@
     </property>
     <addaction name="actionOpen"/>
     <addaction name="actionSave"/>
+    <addaction name="actionClear"/>
    </widget>
    <widget class="QMenu" name="menuInsert">
     <property name="title">
@@ -115,6 +116,11 @@
     <string>Ctrl+S</string>
    </property>
   </action>
+  <action name="actionClear">
+   <property name="text">
+    <string>Clear</string>
+   </property>
+  </action>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
  <customwidgets>