diff --git a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp
index f2f95f52cd30fb8d8a7f7f8ebe9806eb4f7514d2..865583602f23079463c96e94e3a028cfa8f5810a 100644
--- a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp
@@ -185,12 +185,20 @@ void DragTool::createQmlItemNodeFromImage(const QString &imageName, QmlItemNode
     m_selectionIndicator.setItems(scene()->itemsForQmlItemNodes(nodeList));
 }
 
+static inline bool isAncestorOf(FormEditorItem *formEditorItem, FormEditorItem *newParentItem)
+{
+    if (formEditorItem && newParentItem)
+        return formEditorItem->isAncestorOf(newParentItem);
+    return false;
+}
+
 FormEditorItem* DragTool::calculateContainer(const QPointF &point, FormEditorItem * currentItem)
 {
     QList<QGraphicsItem *> list = scene()->items(point);
     foreach (QGraphicsItem *item, list) {
          FormEditorItem *formEditorItem = FormEditorItem::fromQGraphicsItem(item);
-         if (formEditorItem && formEditorItem != currentItem && formEditorItem->isContainer())
+         if (formEditorItem && formEditorItem != currentItem && formEditorItem->isContainer()
+             && !isAncestorOf(currentItem, formEditorItem))
              return formEditorItem;
     }