diff --git a/src/View/SedimentLayers/Reach/Profile/Window.py b/src/View/SedimentLayers/Reach/Profile/Window.py
index a622bfb59caefcb78dbddb88a925cec8d063bc78..93b201a6e76573655631aaf6856fb6259e854047 100644
--- a/src/View/SedimentLayers/Reach/Profile/Window.py
+++ b/src/View/SedimentLayers/Reach/Profile/Window.py
@@ -109,6 +109,9 @@ class ProfileSedimentLayersWindow(ASubMainWindow, ListedSubWindow):
         self.plot_layout = self.find(QVBoxLayout, "verticalLayout")
         self.plot_layout.addWidget(self.canvas)
 
+        self._update_plot()
+
+    def _update_plot(self):
         self.plot = Plot(
             canvas = self.canvas,
             data = self._profile,
@@ -124,6 +127,12 @@ class ProfileSedimentLayersWindow(ASubMainWindow, ListedSubWindow):
         self.copy_sc.activated.connect(self.copy)
         self.paste_sc.activated.connect(self.paste)
 
+        self._table.layoutChanged\
+                   .connect(self._update_plot)
+        self._table.dataChanged\
+                   .connect(self._update_plot)
+
+
     def index_selected_rows(self):
         table = self.find(QTableView, f"tableView")
         return list(
diff --git a/src/View/SedimentLayers/Reach/Window.py b/src/View/SedimentLayers/Reach/Window.py
index 01f363483e82ebfc229639d470b5053ff44468df..ee477edc15ec87e7500de8388c0bf02d46e2edb5 100644
--- a/src/View/SedimentLayers/Reach/Window.py
+++ b/src/View/SedimentLayers/Reach/Window.py
@@ -100,6 +100,9 @@ class ReachSedimentLayersWindow(ASubMainWindow, ListedSubWindow):
         self.plot_layout = self.find(QVBoxLayout, "verticalLayout_2")
         self.plot_layout.addWidget(self.canvas)
 
+        self._update_plot()
+
+    def _update_plot(self):
         self.plot = Plot(
             canvas = self.canvas,
             data = self._reach,
@@ -124,6 +127,12 @@ class ReachSedimentLayersWindow(ASubMainWindow, ListedSubWindow):
         self.copy_sc.activated.connect(self.copy)
         self.paste_sc.activated.connect(self.paste)
 
+        self._table.layoutChanged\
+                   .connect(self._update_plot)
+        self._table.dataChanged\
+                   .connect(self._update_plot)
+
+
     def index_selected_rows(self):
         table = self.find(QTableView, f"tableView")
         return list(
@@ -144,9 +153,11 @@ class ReachSedimentLayersWindow(ASubMainWindow, ListedSubWindow):
 
     def undo(self):
         self._table.undo()
+        self._update_plot()
 
     def redo(self):
         self._table.redo()
+        self._update_plot()
 
     def apply_sl_each_profile(self):
         slw = SLDialog(
@@ -157,6 +168,8 @@ class ReachSedimentLayersWindow(ASubMainWindow, ListedSubWindow):
             sl = slw.sl
             self._table.apply_sl_each_profile(sl)
 
+        self._update_plot()
+
     def edit_profile(self):
         rows = self.index_selected_rows()