diff --git a/gui/canvaspainter/v7/src/TCanvasPainter.cxx b/gui/canvaspainter/v7/src/TCanvasPainter.cxx
index c25a12e7ecf23cb0d544bf0a367ae2179c44d26d..085c5808b9bf73eae26d06b36ac6cea995e45a29 100644
--- a/gui/canvaspainter/v7/src/TCanvasPainter.cxx
+++ b/gui/canvaspainter/v7/src/TCanvasPainter.cxx
@@ -537,6 +537,8 @@ void TCanvasPainter::CancelCommands(bool cancel_all, UInt_t connid)
       auto next = iter;
       next++;
       if (cancel_all || (iter->fConnId == connid)) {
+         if (fWaitingCmdId == iter->fId)
+            fWaitingCmdId.clear();
          iter->fCallback(false);
          fCmds.erase(iter);
       }