diff --git a/src/MissionItem.cc b/src/MissionItem.cc
index 9a9a059bfa1b4bd505ba82b34d75364832ea8f87..febbfed487d509794362dac8d0132b3f9b657162 100644
--- a/src/MissionItem.cc
+++ b/src/MissionItem.cc
@@ -158,6 +158,11 @@ MissionItem::MissionItem(QObject*       parent,
     connect(_param1Fact, &Fact::valueChanged, this, &MissionItem::_factValueChanged);
     connect(_param2Fact, &Fact::valueChanged, this, &MissionItem::_factValueChanged);
     connect(_altitudeRelativeToHomeFact, &Fact::valueChanged, this, &MissionItem::_factValueChanged);
+    
+    // Connect valueChanged signals so we can output coordinateChanged signal
+    connect(_latitudeFact, &Fact::valueChanged, this, &MissionItem::_coordinateFactChanged);
+    connect(_longitudeFact, &Fact::valueChanged, this, &MissionItem::_coordinateFactChanged);
+    connect(_altitudeFact, &Fact::valueChanged, this, &MissionItem::_coordinateFactChanged);
 }
 
 MissionItem::MissionItem(const MissionItem& other, QObject* parent)
@@ -182,6 +187,21 @@ MissionItem::MissionItem(const MissionItem& other, QObject* parent)
     _jumpSequenceMetaData = new FactMetaData(this);
     _jumpRepeatMetaData = new FactMetaData(this);
 
+    // Connect to valueChanged to track dirty state
+    connect(_latitudeFact, &Fact::valueChanged, this, &MissionItem::_factValueChanged);
+    connect(_longitudeFact, &Fact::valueChanged, this, &MissionItem::_factValueChanged);
+    connect(_altitudeFact, &Fact::valueChanged, this, &MissionItem::_factValueChanged);
+    connect(_yawRadiansFact, &Fact::valueChanged, this, &MissionItem::_factValueChanged);
+    connect(_loiterOrbitRadiusFact, &Fact::valueChanged, this, &MissionItem::_factValueChanged);
+    connect(_param1Fact, &Fact::valueChanged, this, &MissionItem::_factValueChanged);
+    connect(_param2Fact, &Fact::valueChanged, this, &MissionItem::_factValueChanged);
+    connect(_altitudeRelativeToHomeFact, &Fact::valueChanged, this, &MissionItem::_factValueChanged);
+    
+    // Connect valueChanged signals so we can output coordinateChanged signal
+    connect(_latitudeFact, &Fact::valueChanged, this, &MissionItem::_coordinateFactChanged);
+    connect(_longitudeFact, &Fact::valueChanged, this, &MissionItem::_coordinateFactChanged);
+    connect(_altitudeFact, &Fact::valueChanged, this, &MissionItem::_coordinateFactChanged);
+    
     *this = other;
 }
 
@@ -752,7 +772,6 @@ void MissionItem::setYawRadians(double yaw)
     if (yawRadians() != yaw)
     {
         _yawRadiansFact->setValue(yaw);
-        emit yawChanged(yaw);
         emit changed(this);
         emit valueStringsChanged(valueStrings());
     }
@@ -813,6 +832,8 @@ bool MissionItem::canEdit(void)
 void MissionItem::setDirty(bool dirty)
 {
     _dirty = dirty;
+    // We want to emit dirtyChanged even if _dirty didn't change. This can be handy signal for
+    // any value within the item changing.
     emit dirtyChanged(_dirty);
 }
 
@@ -821,3 +842,9 @@ void MissionItem::_factValueChanged(QVariant value)
     Q_UNUSED(value);
     setDirty(true);
 }
+
+void MissionItem::_coordinateFactChanged(QVariant value)
+{
+    Q_UNUSED(value);
+    emit coordinateChanged(coordinate());
+}
diff --git a/src/MissionItem.h b/src/MissionItem.h
index 5b350318ec07d2f378479218465a442ecfdee274..514816f6195b3748d26e7c16f3357e85808f4bdc 100644
--- a/src/MissionItem.h
+++ b/src/MissionItem.h
@@ -68,7 +68,6 @@ public:
     Q_PROPERTY(bool                 isCurrentItem       READ isCurrentItem          WRITE setIsCurrentItem  NOTIFY isCurrentItemChanged)
     Q_PROPERTY(bool                 specifiesCoordinate READ specifiesCoordinate                            NOTIFY commandChanged)
     Q_PROPERTY(QGeoCoordinate       coordinate          READ coordinate             WRITE setCoordinate     NOTIFY coordinateChanged)
-    Q_PROPERTY(double               yaw                 READ yawDegrees             WRITE setYawDegrees     NOTIFY yawChanged)
     Q_PROPERTY(QStringList          commandNames        READ commandNames                                   CONSTANT)
     Q_PROPERTY(QString              commandName         READ commandName                                    NOTIFY commandChanged)
     Q_PROPERTY(QStringList          valueLabels         READ valueLabels                                    NOTIFY commandChanged)
@@ -189,7 +188,6 @@ signals:
     void sequenceNumberChanged(int sequenceNumber);
     void isCurrentItemChanged(bool isCurrentItem);
     void coordinateChanged(const QGeoCoordinate& coordinate);
-    void yawChanged(double yaw);
     void dirtyChanged(bool dirty);
 
     /** @brief Announces a change to the waypoint data */
@@ -229,6 +227,7 @@ public:
     
 private slots:
     void _factValueChanged(QVariant value);
+    void _coordinateFactChanged(QVariant value);
 
 private:
     QString _oneDecimalString(double value);