diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp
index 655736525bb0c9cf43a1daa6c49ec556eb9caad6..495438c58ed1348f70e867f765188e540b4b5895 100644
--- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp
@@ -135,6 +135,21 @@ void NodeInstanceServer::setSlowRenderTimerInterval(int timerInterval)
     m_slowRenderTimerInterval = timerInterval;
 }
 
+void NodeInstanceServer::setTimerId(int timerId)
+{
+    m_timer = timerId;
+}
+
+int NodeInstanceServer::timerId() const
+{
+    return m_timer;
+}
+
+int NodeInstanceServer::renderTimerInterval() const
+{
+    return m_renderTimerInterval;
+}
+
 void NodeInstanceServer::startRenderTimer()
 {
     if (m_slowRenderTimer)
@@ -151,6 +166,11 @@ void NodeInstanceServer::slowDownRenderTimer()
     if (!m_slowRenderTimer)
         stopRenderTimer();
 
+    if (m_timer != 0) {
+        killTimer(m_timer);
+        m_timer = 0;
+    }
+
     if (m_timer == 0)
         m_timer = startTimer(m_slowRenderTimerInterval);
 
diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h
index b75ceaa65363d6b930c1bff08a3cd519bd949bd3..dd2fc124b6a03710b050087b65873893fe239535 100644
--- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h
+++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h
@@ -118,10 +118,11 @@ protected:
 
     void addChangedProperty(const InstancePropertyPair &property);
 
-    void startRenderTimer();
+    virtual void startRenderTimer();
     void slowDownRenderTimer();
     void stopRenderTimer();
     void setRenderTimerInterval(int timerInterval);
+    int renderTimerInterval() const;
     void setSlowRenderTimerInterval(int timerInterval);
 
     void initializeDeclarativeView();
@@ -129,6 +130,9 @@ protected:
 
     QImage renderPreviewImage();
 
+    void setTimerId(int timerId);
+    int timerId() const;
+
 private:
     ServerNodeInstance m_rootNodeInstance;
     ServerNodeInstance m_activeStateInstance;
diff --git a/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.cpp b/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.cpp
index 5ba1cf2982b3037c8b87ac1798c6ff9045bbff3c..e88cb2ef133ec36420cfcb431a24631ad26a9630 100644
--- a/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.cpp
@@ -7,7 +7,7 @@ namespace QmlDesigner {
 PreviewNodeInstanceServer::PreviewNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient) :
     NodeInstanceServer(nodeInstanceClient)
 {
-    setRenderTimerInterval(50);
+    setRenderTimerInterval(500);
     setSlowRenderTimerInterval(10000);
 }
 
@@ -18,6 +18,15 @@ void PreviewNodeInstanceServer::createScene(const CreateSceneCommand &command)
 
     startRenderTimer();
 }
+void PreviewNodeInstanceServer::startRenderTimer()
+{
+    if (timerId() != 0)
+        killTimer(timerId());
+
+    int timerId = startTimer(renderTimerInterval());
+
+    setTimerId(timerId);
+}
 
 void PreviewNodeInstanceServer::findItemChangesAndSendChangeCommands()
 {
diff --git a/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.h b/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.h
index 11c05595e5618f5646a392c8361e52d216ed1f28..9a0de118858249f59af4d43d6e1ab25dd70e6463 100644
--- a/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.h
+++ b/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.h
@@ -15,6 +15,7 @@ public:
 
 protected:
     void findItemChangesAndSendChangeCommands();
+    void startRenderTimer();
 
 private:
     ServerNodeInstance m_actualState;