diff --git a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp
index ee55ff4edd9a1885d3d47caaefc4c5f7a1fb547c..5343345b5ecb0843d74b9cf1708e765d854746ca 100644
--- a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp
@@ -35,12 +35,14 @@
 #include "itemutilfunctions.h"
 #include <customdraganddrop.h>
 #include <metainfo.h>
+#include <rewritingexception.h>
 
 #include "resizehandleitem.h"
 
 #include <QApplication>
 #include <QGraphicsSceneMouseEvent>
 #include <QtDebug>
+#include <QMessageBox>
 
 namespace QmlDesigner {
 
@@ -143,7 +145,6 @@ void DragTool::createQmlItemNode(const ItemLibraryEntry &itemLibraryEntry, QmlIt
     m_dragNode = view()->createQmlItemNode(itemLibraryEntry, pos, parentNode);
 
     Q_ASSERT(m_dragNode.modelNode().isValid());
-    Q_ASSERT(m_dragNode.isValid());
 
     QList<QmlItemNode> nodeList;
     nodeList.append(m_dragNode);
@@ -205,7 +206,11 @@ void DragTool::dropEvent(QGraphicsSceneDragDropEvent * event)
         event->accept();
         end(event->scenePos());
         //Q_ASSERT(m_token.isValid());
-        m_rewriterTransaction.commit();
+        try {
+            m_rewriterTransaction.commit();
+        } catch (RewritingException &e) {
+            QMessageBox::warning(0, "Error", e.description());
+        }
         m_dragNode = ModelNode();
         view()->changeToSelectionTool();
     }
@@ -230,7 +235,13 @@ void DragTool::dragLeaveEvent(QGraphicsSceneDragDropEvent * event)
         if (m_dragNode.isValid())
             m_dragNode.destroy();
         end(event->scenePos());
-        m_rewriterTransaction.commit();
+
+        try {
+            m_rewriterTransaction.commit();
+        } catch (RewritingException &e) {
+            QMessageBox::warning(0, "Error", e.description());
+        }
+
         QmlDesignerItemLibraryDragAndDrop::CustomDragAndDrop::show();
         QList<QmlItemNode> nodeList;
         view()->setSelectedQmlItemNodes(nodeList);
@@ -267,6 +278,8 @@ void DragTool::dragMoveEvent(QGraphicsSceneDragDropEvent * event)
             move(event->scenePos());
         } else {
             //create new node  if container
+            if (m_dragNode.modelNode().isValid())
+                return;
 
             FormEditorItem *parentItem = calculateContainer(event->scenePos());
             if (!parentItem)
@@ -284,7 +297,8 @@ void DragTool::dragMoveEvent(QGraphicsSceneDragDropEvent * event)
                 QString imageName = QString::fromLatin1((event->mimeData()->data("application/vnd.bauhaus.libraryresource")));
                 createQmlItemNodeFromImage(imageName, parentNode, event->scenePos());
             } else Q_ASSERT(false);
-            beginWithPoint(event->scenePos());
+            if  (m_dragNode.isValid())
+                beginWithPoint(event->scenePos());
         }
     }
     if (event->mimeData()->hasFormat("application/vnd.bauhaus.libraryresource")) {
diff --git a/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp b/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp
index 21baa1eabec7ea38f8ae9089e90e675c6a8c75d0..c1d710467e44bc6028d41aa2568f48b15168e95c 100644
--- a/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp
@@ -199,7 +199,8 @@ QmlItemNode QmlModelView::createQmlItemNode(const ItemLibraryEntry &itemLibraryE
             parentNode.nodeAbstractProperty(parentNode.defaultProperty()).reparentHere(newNode);
         }
 
-        Q_ASSERT(newNode.isValid());
+        if (!newNode.isValid())
+            return newNode;
 
         QString id;
         int i = 1;