diff --git a/src/quick3d/qdemonnode.cpp b/src/quick3d/qdemonnode.cpp
index 2501b3babdb08bec5e65c8b395fb321db4dc0b6d..299ecc182215807ee851a8a5718d0c4124d1b9af 100644
--- a/src/quick3d/qdemonnode.cpp
+++ b/src/quick3d/qdemonnode.cpp
@@ -148,8 +148,20 @@ void QDemonNode::setPosition(QVector3D position)
     if (m_position == position)
         return;
 
+    const bool xUnchanged = qFuzzyCompare(position.x(), m_position.x());
+    const bool yUnchanged = qFuzzyCompare(position.y(), m_position.y());
+    const bool zUnchanged = qFuzzyCompare(position.z(), m_position.z());
+
     m_position = position;
     emit positionChanged(m_position);
+
+    if (!xUnchanged)
+        emit xChanged(m_position.x());
+    if (!yUnchanged)
+        emit yChanged(m_position.y());
+    if (!zUnchanged)
+        emit zChanged(m_position.z());
+
     update();
 }