diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp
index ccc367461a25211a97ed3d5c6fcdd5958feded54..e3d8e1e107d22633364e5a12a0de3fe299ec6a31 100644
--- a/src/plugins/debugger/breakhandler.cpp
+++ b/src/plugins/debugger/breakhandler.cpp
@@ -744,8 +744,7 @@ void BreakHandler::setEnabled(BreakpointModelId id, bool on)
     if (it->data.enabled == on)
         return;
     it->data.enabled = on;
-    it->destroyMarker();
-    it->updateMarker(id);
+    it->updateMarkerIcon();
     if (it->engine) {
         it->state = BreakpointChangeRequested;
         scheduleSynchronization();
@@ -780,8 +779,7 @@ void BreakHandler::setTracepoint(BreakpointModelId id, bool on)
     if (it->data.tracepoint == on)
         return;
     it->data.tracepoint = on;
-    it->destroyMarker();
-    it->updateMarker(id);
+    it->updateMarkerIcon();
 
     if (it->engine) {
         it->state = BreakpointChangeRequested;
@@ -1414,6 +1412,12 @@ bool BreakHandler::BreakpointItem::isLocatedAt
             || fileNameMatch(fileName, markerFileName()));
 }
 
+void BreakHandler::BreakpointItem::updateMarkerIcon()
+{
+    marker->setIcon(icon());
+    marker->updateMarker();
+}
+
 void BreakHandler::BreakpointItem::updateMarker(BreakpointModelId id)
 {
     QString file = markerFileName();
diff --git a/src/plugins/debugger/breakhandler.h b/src/plugins/debugger/breakhandler.h
index 8c167ac094f68d4d9b04ebe5434ea36f24cf3dad..ca003552f912e5f84ecd56d8c566449939cfc4e3 100644
--- a/src/plugins/debugger/breakhandler.h
+++ b/src/plugins/debugger/breakhandler.h
@@ -197,6 +197,7 @@ private:
         bool isLocatedAt(const QString &fileName, int lineNumber,
             bool useMarkerPosition) const;
         void updateMarker(BreakpointModelId id);
+        void updateMarkerIcon();
         QString toToolTip() const;
         QString markerFileName() const;
         int markerLineNumber() const;