diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp
index e00d1ed7ff2638f5d44f19c81dfcf07b393f6ab8..2dab1a1f6bad73fd5f11579114d8511450687a6c 100644
--- a/src/plugins/debugger/qml/qmlengine.cpp
+++ b/src/plugins/debugger/qml/qmlengine.cpp
@@ -861,13 +861,14 @@ void QmlEngine::attemptBreakpointSynchronization()
 
     BreakHandler *handler = breakHandler();
 
+    DebuggerEngine *bpOwner = isSlaveEngine() ? masterEngine() : this;
     foreach (BreakpointModelId id, handler->unclaimedBreakpointIds()) {
         // Take ownership of the breakpoint. Requests insertion.
         if (acceptsBreakpoint(id))
-            handler->setEngine(id, this);
+            handler->setEngine(id, bpOwner);
     }
 
-    foreach (BreakpointModelId id, handler->engineBreakpointIds(this)) {
+    foreach (BreakpointModelId id, handler->engineBreakpointIds(bpOwner)) {
         switch (handler->state(id)) {
         case BreakpointNew:
             // Should not happen once claimed.