diff --git a/src/declarative/particles/qsgangledirection.cpp b/src/declarative/particles/qsgangledirection.cpp
index 10a31bf07ea08ba9f78129851359aa66a1618f46..b2fb6b2fb8a856de8f22e3c6ac575d4c84a992dd 100644
--- a/src/declarative/particles/qsgangledirection.cpp
+++ b/src/declarative/particles/qsgangledirection.cpp
@@ -102,14 +102,15 @@ QSGAngleDirection::QSGAngleDirection(QObject *parent) :
 
 }
 
-const QPointF &QSGAngleDirection::sample(const QPointF &from)
+const QPointF QSGAngleDirection::sample(const QPointF &from)
 {
-    //TODO: Faster
+    Q_UNUSED(from);
+    QPointF ret;
     qreal theta = m_angle*CONV - m_angleVariation*CONV + rand()/float(RAND_MAX) * m_angleVariation*CONV * 2;
     qreal mag = m_magnitude- m_magnitudeVariation + rand()/float(RAND_MAX) * m_magnitudeVariation * 2;
-    m_ret.setX(mag * cos(theta));
-    m_ret.setY(mag * sin(theta));
-    return m_ret;
+    ret.setX(mag * cos(theta));
+    ret.setY(mag * sin(theta));
+    return ret;
 }
 
 QT_END_NAMESPACE
diff --git a/src/declarative/particles/qsgangledirection_p.h b/src/declarative/particles/qsgangledirection_p.h
index 870a7eb0d91656b058a42d87059bc2afa2bb6654..b68d751fd85f14bf93a7463f1a2c8440ad91f44f 100644
--- a/src/declarative/particles/qsgangledirection_p.h
+++ b/src/declarative/particles/qsgangledirection_p.h
@@ -57,7 +57,7 @@ class QSGAngleDirection : public QSGDirection
     Q_PROPERTY(qreal magnitudeVariation READ magnitudeVariation WRITE setMagnitudeVariation NOTIFY magnitudeVariationChanged)
 public:
     explicit QSGAngleDirection(QObject *parent = 0);
-    const QPointF &sample(const QPointF &from);
+    const QPointF sample(const QPointF &from);
     qreal angle() const
     {
         return m_angle;
diff --git a/src/declarative/particles/qsgcumulativedirection.cpp b/src/declarative/particles/qsgcumulativedirection.cpp
index 8e4e6b681d96ee03a8886356d528dc77028792f4..f2bfea3acb4339267b68c547568c058beadb1567 100644
--- a/src/declarative/particles/qsgcumulativedirection.cpp
+++ b/src/declarative/particles/qsgcumulativedirection.cpp
@@ -59,7 +59,7 @@ QDeclarativeListProperty<QSGDirection> QSGCumulativeDirection::directions()
     return QDeclarativeListProperty<QSGDirection>(this, m_directions);//TODO: Proper list property
 }
 
-const QPointF &QSGCumulativeDirection::sample(const QPointF &from)
+const QPointF QSGCumulativeDirection::sample(const QPointF &from)
 {
     QPointF ret;
     foreach (QSGDirection* dir, m_directions)
diff --git a/src/declarative/particles/qsgcumulativedirection_p.h b/src/declarative/particles/qsgcumulativedirection_p.h
index 4f93fed1bd0c04bd09e5e4b6e838999b7a12ad49..a77f50fd5b9a02122b405784757dc5adbdbf5d3f 100644
--- a/src/declarative/particles/qsgcumulativedirection_p.h
+++ b/src/declarative/particles/qsgcumulativedirection_p.h
@@ -57,7 +57,7 @@ class QSGCumulativeDirection : public QSGDirection
 public:
     explicit QSGCumulativeDirection(QObject *parent = 0);
     QDeclarativeListProperty<QSGDirection> directions();
-    const QPointF &sample(const QPointF &from);
+    const QPointF sample(const QPointF &from);
 private:
     QList<QSGDirection*> m_directions;
 };
diff --git a/src/declarative/particles/qsgcustomparticle.cpp b/src/declarative/particles/qsgcustomparticle.cpp
index 6c95fe66c0002d8ab8f00ac9d6c8c27ebcf8646f..ab4cfa0a3aefa467dfaed02011483c06978100be 100644
--- a/src/declarative/particles/qsgcustomparticle.cpp
+++ b/src/declarative/particles/qsgcustomparticle.cpp
@@ -406,6 +406,7 @@ void QSGCustomParticle::lookThroughShaderCode(const QByteArray &code)
 
 QSGNode *QSGCustomParticle::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
 {
+    Q_UNUSED(oldNode);
     if (m_pleaseReset){
 
         //delete m_material;//Shader effect item doesn't regen material?
diff --git a/src/declarative/particles/qsgdirection.cpp b/src/declarative/particles/qsgdirection.cpp
index f233a56f61ede757888f435c2149e4b7d5860520..eff4b56774165493c664487642b3da1a0e8a17fb 100644
--- a/src/declarative/particles/qsgdirection.cpp
+++ b/src/declarative/particles/qsgdirection.cpp
@@ -55,9 +55,10 @@ QSGDirection::QSGDirection(QObject *parent) :
 {
 }
 
-const QPointF &QSGDirection::sample(const QPointF &from)
+const QPointF QSGDirection::sample(const QPointF &from)
 {
-    return m_ret;
+    Q_UNUSED(from);
+    return QPointF();
 }
 
 QT_END_NAMESPACE
diff --git a/src/declarative/particles/qsgdirection_p.h b/src/declarative/particles/qsgdirection_p.h
index f64d5644e7a0f9e1ef3dad8cd57d9947eed51955..a9431450377e285273fca7e1be5ba63c6419aba2 100644
--- a/src/declarative/particles/qsgdirection_p.h
+++ b/src/declarative/particles/qsgdirection_p.h
@@ -58,13 +58,12 @@ class QSGDirection : public QObject
 public:
     explicit QSGDirection(QObject *parent = 0);
 
-    virtual const QPointF &sample(const QPointF &from);
+    virtual const QPointF sample(const QPointF &from);
 signals:
 
 public slots:
 
 protected:
-    QPointF m_ret;
 };
 
 QT_END_NAMESPACE
diff --git a/src/declarative/particles/qsgimageparticle.cpp b/src/declarative/particles/qsgimageparticle.cpp
index 007cfb98db63ec3a77de3ddeb17c2304646e53ab..581024d5787b627984f0ed4a5aee05e76e16aa52 100644
--- a/src/declarative/particles/qsgimageparticle.cpp
+++ b/src/declarative/particles/qsgimageparticle.cpp
@@ -629,11 +629,11 @@ QSGImageParticle::QSGImageParticle(QSGItem* parent)
     , m_blueVariation(0.0)
     , m_rotation(0)
     , m_autoRotation(false)
-    , m_xVector(0)
-    , m_yVector(0)
     , m_rotationVariation(0)
     , m_rotationSpeed(0)
     , m_rotationSpeedVariation(0)
+    , m_xVector(0)
+    , m_yVector(0)
     , m_spriteEngine(0)
     , m_bloat(false)
     , perfLevel(Unknown)
diff --git a/src/declarative/particles/qsgparticleaffector.cpp b/src/declarative/particles/qsgparticleaffector.cpp
index f637a17508f3b50941b36029d0b21bea460a06ce..cff3c294443158e50bae29fca6615583984a4563 100644
--- a/src/declarative/particles/qsgparticleaffector.cpp
+++ b/src/declarative/particles/qsgparticleaffector.cpp
@@ -187,7 +187,7 @@ void QSGParticleAffector::affectSystem(qreal dt)
     }
 }
 
-bool QSGParticleAffector::affectParticle(QSGParticleData *d, qreal dt)
+bool QSGParticleAffector::affectParticle(QSGParticleData *, qreal )
 {
     return true;
 }
diff --git a/src/declarative/particles/qsgparticleemitter.cpp b/src/declarative/particles/qsgparticleemitter.cpp
index d44ad689ee1a155dd554d9fe327d2497bbe573b8..13ab3e61855d80225dbbec0d6b052afec9aac6ce 100644
--- a/src/declarative/particles/qsgparticleemitter.cpp
+++ b/src/declarative/particles/qsgparticleemitter.cpp
@@ -223,13 +223,13 @@ QSGParticleEmitter::QSGParticleEmitter(QSGItem *parent) :
   , m_particleSize(16)
   , m_particleEndSize(-1)
   , m_particleSizeVariation(0)
-  , m_maxParticleCount(-1)
+  , m_startTime(0)
   , m_burstLeft(0)
+  , m_maxParticleCount(-1)
   , m_speed_from_movement(0)
   , m_reset_last(true)
   , m_last_timestamp(-1)
   , m_last_emission(0)
-  , m_startTime(0)
   , m_overwrite(true)
 
 {
diff --git a/src/declarative/particles/qsgpointdirection.cpp b/src/declarative/particles/qsgpointdirection.cpp
index dc104c1a8162372721c2b2f81980d636c6cd8d1d..2b83c271a374d2329116f84125e89818591e7fb5 100644
--- a/src/declarative/particles/qsgpointdirection.cpp
+++ b/src/declarative/particles/qsgpointdirection.cpp
@@ -74,11 +74,12 @@ QSGPointDirection::QSGPointDirection(QObject *parent) :
 {
 }
 
-const QPointF &QSGPointDirection::sample(const QPointF &)
+const QPointF QSGPointDirection::sample(const QPointF &)
 {
-    m_ret.setX(m_x - m_xVariation + rand() / float(RAND_MAX) * m_xVariation * 2);
-    m_ret.setY(m_y - m_yVariation + rand() / float(RAND_MAX) * m_yVariation * 2);
-    return m_ret;
+    QPointF ret;
+    ret.setX(m_x - m_xVariation + rand() / float(RAND_MAX) * m_xVariation * 2);
+    ret.setY(m_y - m_yVariation + rand() / float(RAND_MAX) * m_yVariation * 2);
+    return ret;
 }
 
 QT_END_NAMESPACE
diff --git a/src/declarative/particles/qsgpointdirection_p.h b/src/declarative/particles/qsgpointdirection_p.h
index ca00824a3ebfa52de9b5895da81703ed99480e14..0a4c17f236352caa72fc4f521207692f8229a418 100644
--- a/src/declarative/particles/qsgpointdirection_p.h
+++ b/src/declarative/particles/qsgpointdirection_p.h
@@ -58,7 +58,7 @@ class QSGPointDirection : public QSGDirection
     Q_PROPERTY(qreal yVariation READ yVariation WRITE setYVariation NOTIFY yVariationChanged)
 public:
     explicit QSGPointDirection(QObject *parent = 0);
-    virtual const QPointF &sample(const QPointF &from);
+    virtual const QPointF sample(const QPointF &from);
     qreal x() const
     {
         return m_x;
diff --git a/src/declarative/particles/qsgtargetdirection.cpp b/src/declarative/particles/qsgtargetdirection.cpp
index d9a3ce5a74039ba3fc2db51ba386c553133dcedb..79ba433851019fc93c8cdea96dc680ebc5321c5e 100644
--- a/src/declarative/particles/qsgtargetdirection.cpp
+++ b/src/declarative/particles/qsgtargetdirection.cpp
@@ -94,9 +94,10 @@ QSGTargetDirection::QSGTargetDirection(QObject *parent) :
 {
 }
 
-const QPointF &QSGTargetDirection::sample(const QPointF &from)
+const QPointF QSGTargetDirection::sample(const QPointF &from)
 {
     //###This approach loses interpolating the last position of the target (like we could with the emitter) is it worthwhile?
+    QPointF ret;
     qreal targetX;
     qreal targetY;
     if (m_targetItem){
@@ -108,9 +109,9 @@ const QPointF &QSGTargetDirection::sample(const QPointF &from)
             targetX += m_targetItem->x();
             targetY += m_targetItem->y();
         }else{
-            m_ret = parentEmitter->mapFromItem(m_targetItem, QPointF(targetX, targetY));
-            targetX = m_ret.x();
-            targetY = m_ret.y();
+            ret = parentEmitter->mapFromItem(m_targetItem, QPointF(targetX, targetY));
+            targetX = ret.x();
+            targetY = ret.y();
         }
     }else{
         targetX = m_targetX;
@@ -122,9 +123,9 @@ const QPointF &QSGTargetDirection::sample(const QPointF &from)
     qreal mag = m_magnitude + rand()/(float)RAND_MAX * m_magnitudeVariation * 2 - m_magnitudeVariation;
     if (m_proportionalMagnitude)
         mag *= sqrt(targetX * targetX + targetY * targetY);
-    m_ret.setX(mag * cos(theta));
-    m_ret.setY(mag * sin(theta));
-    return m_ret;
+    ret.setX(mag * cos(theta));
+    ret.setY(mag * sin(theta));
+    return ret;
 }
 
 QT_END_NAMESPACE
diff --git a/src/declarative/particles/qsgtargetdirection_p.h b/src/declarative/particles/qsgtargetdirection_p.h
index 8f4901a57b996a8769f53a093978c464ef19b0da..75c3e08cdba76722920d2942b73b1f8e183b2395 100644
--- a/src/declarative/particles/qsgtargetdirection_p.h
+++ b/src/declarative/particles/qsgtargetdirection_p.h
@@ -66,7 +66,7 @@ class QSGTargetDirection : public QSGDirection
 
 public:
     explicit QSGTargetDirection(QObject *parent = 0);
-    virtual const QPointF &sample(const QPointF &from);
+    virtual const QPointF sample(const QPointF &from);
 
     qreal targetX() const
     {
diff --git a/src/declarative/particles/qsgtrailemitter.cpp b/src/declarative/particles/qsgtrailemitter.cpp
index 6bccf3ba8c143c5e29ead75fa80a5aeacb43101c..427b587cafc16a8415cbdd86c9d6f0ca52c65afd 100644
--- a/src/declarative/particles/qsgtrailemitter.cpp
+++ b/src/declarative/particles/qsgtrailemitter.cpp
@@ -196,7 +196,7 @@ void QSGTrailEmitter::emitWindow(int timeStamp)
                 // Note that burst location doesn't get used for follow emitter
                 qreal followT =  pt - d->t;
                 qreal followT2 = followT * followT * 0.5;
-                qreal sizeOffset = d->size/2;//TODO: Current size? As an option
+                //qreal sizeOffset = d->size/2;//TODO: Current size? As an option
                 //TODO: Set variations
                 //Subtract offset, because PS expects this in emitter coordinates
                 QRectF boundsRect(d->x - offset.x() + d->vx * followT + d->ax * followT2 - m_emitterXVariation/2,
@@ -217,7 +217,7 @@ void QSGTrailEmitter::emitWindow(int timeStamp)
                 const QPointF &speed = m_speed->sample(newPos);
                 datum->vx = speed.x()
                     + m_speed_from_movement * d->vx;
-                datum->vy = speed.y();
+                datum->vy = speed.y()
                     + m_speed_from_movement * d->vy;
 
                 // Particle acceleration