diff --git a/src/FactSystem/FactControls/AltitudeFactTextField.qml b/src/FactSystem/FactControls/AltitudeFactTextField.qml
index 2775af2..5a22eca 100644
--- a/src/FactSystem/FactControls/AltitudeFactTextField.qml
+++ b/src/FactSystem/FactControls/AltitudeFactTextField.qml
@@ -16,12 +16,13 @@ import QGroundControl.Controls      1.0
 import QGroundControl.ScreenTools   1.0
 
 FactTextField {
-    unitsLabel:         fact ? fact.units : ""
-    extraUnitsLabel:    fact ? _altitudeModeExtraUnits : ""
-    showUnits:          true
-    showHelp:           true
+    unitsLabel:                 fact ? fact.units : ""
+    extraUnitsLabel:            fact ? _altitudeModeExtraUnits : ""
+    showUnits:                  true
+    showHelp:                   true
 
-    property int altitudeMode: QGroundControl.AltitudeModeNone
+    property int  altitudeMode:             QGroundControl.AltitudeModeNone
+    property bool showAboveTerrainWarning:  true
 
     readonly property string _altModeNoneExtraUnits:            ""
     readonly property string _altModeRelativeExtraUnits:        qsTr("(Rel)")
@@ -44,7 +45,7 @@ FactTextField {
             _altitudeModeExtraUnits = _altModeAbsoluteExtraUnits
         } else if (altitudeMode === QGroundControl.AltitudeModeAboveTerrain) {
             _altitudeModeExtraUnits = _altModeAboveTerrainExtraUnits
-            if (!_aboveTerrainWarning.rawValue) {
+            if (!_aboveTerrainWarning.rawValue && showAboveTerrainWarning) {
                 mainWindow.showComponentDialog(aboveTerrainWarning, qsTr("Warning"), mainWindow.showDialogDefaultWidth, StandardButton.Ok)
             }
         } else if (missionItem.altitudeMode === QGroundControl.AltitudeModeTerrainFrame) {
diff --git a/src/MissionManager/CameraCalc.cc b/src/MissionManager/CameraCalc.cc
index 06c8edc..39a9719 100644
--- a/src/MissionManager/CameraCalc.cc
+++ b/src/MissionManager/CameraCalc.cc
@@ -29,7 +29,7 @@ const char* CameraCalc::_jsonCameraSpecTypeKey =            "CameraSpecType";
 
 CameraCalc::CameraCalc(PlanMasterController* masterController, const QString& settingsGroup, QObject* parent)
     : CameraSpec                    (settingsGroup, parent)
-    , _dirty                        (masterController)
+    , _dirty                        (false)
     , _disableRecalc                (false)
     , _distanceToSurfaceRelative    (true)
     , _metaDataMap                  (FactMetaData::createMapFromJsonFile(QStringLiteral(":/json/CameraCalc.FactMetaData.json"), this))
diff --git a/src/MissionManager/CameraCalc.h b/src/MissionManager/CameraCalc.h
index 22cf4d7..054160c 100644
--- a/src/MissionManager/CameraCalc.h
+++ b/src/MissionManager/CameraCalc.h
@@ -33,6 +33,13 @@ public:
     Q_PROPERTY(Fact*            sideOverlap                 READ sideOverlap                                                    CONSTANT)
     Q_PROPERTY(Fact*            adjustedFootprintSide       READ adjustedFootprintSide                                          CONSTANT)                                   ///< Side footprint adjusted down for overlap
     Q_PROPERTY(Fact*            adjustedFootprintFrontal    READ adjustedFootprintFrontal                                       CONSTANT)                                   ///< Frontal footprint adjusted down for overlap
+
+    // When we are creating a manual grid we still use CameraCalc to store the manual grid information. It's a bastardization of what
+    // CameraCalc is meant for but it greatly simplifies code and persistance of manual grids.
+    //  grid altitude -         distanceToSurface
+    //  grid altitude mode -    distanceToSurfaceRelative
+    //  trigger distance -      adjustedFootprintFrontal
+    //  transect spacing -      adjustedFootprintSide
     Q_PROPERTY(bool             distanceToSurfaceRelative   READ distanceToSurfaceRelative WRITE setDistanceToSurfaceRelative   NOTIFY distanceToSurfaceRelativeChanged)
 
     // The following values are calculated from the camera properties
diff --git a/src/MissionManager/MissionSettingsItem.cc b/src/MissionManager/MissionSettingsItem.cc
index 4302a21..7712faa 100644
--- a/src/MissionManager/MissionSettingsItem.cc
+++ b/src/MissionManager/MissionSettingsItem.cc
@@ -190,7 +190,9 @@ void MissionSettingsItem::_setCoordinateWorker(const QGeoCoordinate& coordinate)
         _plannedHomePositionCoordinate = coordinate;
         emit coordinateChanged(coordinate);
         emit exitCoordinateChanged(coordinate);
-        _plannedHomePositionAltitudeFact.setRawValue(coordinate.altitude());
+        if (_plannedHomePositionFromVehicle) {
+            _plannedHomePositionAltitudeFact.setRawValue(coordinate.altitude());
+        }
     }
 }
 
diff --git a/src/MissionManager/TransectStyle.SettingsGroup.json b/src/MissionManager/TransectStyle.SettingsGroup.json
index fe86299..d651168 100644
--- a/src/MissionManager/TransectStyle.SettingsGroup.json
+++ b/src/MissionManager/TransectStyle.SettingsGroup.json
@@ -37,7 +37,7 @@
 },
 {
     "name":             "TerrainAdjustTolerance",
-    "shortDescription": "If adjacent terrain waypoints are within this tolerence they will be removed.",
+    "shortDescription": "Additional waypoints within the transect will be added if the terrain altitude difference grows larger than this tolerance.",
     "type":             "double",
     "decimalPlaces":    2,
     "min":              0,
diff --git a/src/MissionManager/TransectStyleComplexItem.cc b/src/MissionManager/TransectStyleComplexItem.cc
index 948a196..489e9a2 100644
--- a/src/MissionManager/TransectStyleComplexItem.cc
+++ b/src/MissionManager/TransectStyleComplexItem.cc
@@ -538,6 +538,18 @@ void TransectStyleComplexItem::_adjustTransectsForTerrain(void)
         }
 
         emit lastSequenceNumberChanged(lastSequenceNumber());
+
+        // Update entry/exit coordinates
+        if (_transects.count()) {
+            if (_transects.first().count()) {
+                _coordinate.setAltitude(_transects.first().first().coord.altitude());
+                emit coordinateChanged(coordinate());
+            }
+            if (_transects.last().count()) {
+                _exitCoordinate.setAltitude(_transects.last().last().coord.altitude());
+                emit exitCoordinateChanged(exitCoordinate());
+            }
+        }
     }
 }
 
@@ -653,32 +665,25 @@ void TransectStyleComplexItem::_adjustForTolerance(QList<CoordInfo_t>& transect)
 {
     QList<CoordInfo_t> adjustedPoints;
 
-    double tolerance = _terrainAdjustToleranceFact.rawValue().toDouble();
-
-    int coordIndex = 0;
-    while (coordIndex < transect.count()) {
-        const CoordInfo_t& fromCoordInfo = transect[coordIndex];
+    if (transect.count()) {
+        double          tolerance =     _terrainAdjustToleranceFact.rawValue().toDouble();
+        CoordInfo_t&    lastCoordInfo = transect.first();
 
-        adjustedPoints.append(fromCoordInfo);
+        adjustedPoints.append(lastCoordInfo);
 
-        // Walk forward until we fall out of tolerence or find a fixed point
-        while (++coordIndex < transect.count()) {
-            const CoordInfo_t& toCoordInfo = transect[coordIndex];
-            if (toCoordInfo.coordType != CoordTypeInteriorTerrainAdded || qAbs(fromCoordInfo.coord.altitude() - toCoordInfo.coord.altitude()) > tolerance) {
-                adjustedPoints.append(toCoordInfo);
-                coordIndex++;
-                break;
+        int coordIndex = 1;
+        while (coordIndex < transect.count()) {
+            // Walk forward until we fall out of tolerence. When we fall out of tolerance add that point.
+            // We always add non-interstitial points no matter what.
+            const CoordInfo_t& nextCoordInfo = transect[coordIndex];
+            if (nextCoordInfo.coordType != CoordTypeInteriorTerrainAdded || qAbs(lastCoordInfo.coord.altitude() - nextCoordInfo.coord.altitude()) > tolerance) {
+                adjustedPoints.append(nextCoordInfo);
+                lastCoordInfo = nextCoordInfo;
             }
+            coordIndex++;
         }
     }
 
-#if 0
-    qDebug() << "_adjustForTolerance";
-    for (const TransectStyleComplexItem::CoordInfo_t& coordInfo: adjustedPoints) {
-        qDebug() << coordInfo.coordType;
-    }
-#endif
-
     transect = adjustedPoints;
 }
 
@@ -686,7 +691,7 @@ void TransectStyleComplexItem::_addInterstitialTerrainPoints(QList<CoordInfo_t>&
 {
     QList<CoordInfo_t> adjustedTransect;
 
-    double requestedAltitude = _cameraCalc.distanceToSurface()->rawValue().toDouble();
+    double distanceToSurface = _cameraCalc.distanceToSurface()->rawValue().toDouble();
 
     for (int i=0; i<transect.count() - 1; i++) {
         CoordInfo_t fromCoordInfo = transect[i];
@@ -697,8 +702,8 @@ void TransectStyleComplexItem::_addInterstitialTerrainPoints(QList<CoordInfo_t>&
 
         const TerrainPathQuery::PathHeightInfo_t& pathHeightInfo = transectPathHeightInfo[i];
 
-        fromCoordInfo.coord.setAltitude(pathHeightInfo.heights.first() + requestedAltitude);
-        toCoordInfo.coord.setAltitude(pathHeightInfo.heights.last() + requestedAltitude);
+        fromCoordInfo.coord.setAltitude(pathHeightInfo.heights.first() + distanceToSurface);
+        toCoordInfo.coord.setAltitude(pathHeightInfo.heights.last() + distanceToSurface);
 
         if (i == 0) {
             adjustedTransect.append(fromCoordInfo);
@@ -712,7 +717,7 @@ void TransectStyleComplexItem::_addInterstitialTerrainPoints(QList<CoordInfo_t>&
             CoordInfo_t interstitialCoordInfo;
             interstitialCoordInfo.coordType = CoordTypeInteriorTerrainAdded;
             interstitialCoordInfo.coord = fromCoordInfo.coord.atDistanceAndAzimuth(distance * percentTowardsTo, azimuth);
-            interstitialCoordInfo.coord.setAltitude(interstitialTerrainHeight + requestedAltitude);
+            interstitialCoordInfo.coord.setAltitude(interstitialTerrainHeight + distanceToSurface);
 
             adjustedTransect.append(interstitialCoordInfo);
         }
@@ -722,7 +727,7 @@ void TransectStyleComplexItem::_addInterstitialTerrainPoints(QList<CoordInfo_t>&
 
     CoordInfo_t lastCoordInfo = transect.last();
     const TerrainPathQuery::PathHeightInfo_t& pathHeightInfo = transectPathHeightInfo.last();
-    lastCoordInfo.coord.setAltitude(pathHeightInfo.heights.last() + requestedAltitude);
+    lastCoordInfo.coord.setAltitude(pathHeightInfo.heights.last() + distanceToSurface);
     adjustedTransect.append(lastCoordInfo);
 
 #if 0
diff --git a/src/PlanView/CameraCalcCamera.qml b/src/PlanView/CameraCalcCamera.qml
index 089b003..4f74ade 100644
--- a/src/PlanView/CameraCalcCamera.qml
+++ b/src/PlanView/CameraCalcCamera.qml
@@ -15,11 +15,6 @@ Column {
     spacing:        _margin
 
     property var    cameraCalc
-    property bool   vehicleFlightIsFrontal:         true
-    property string distanceToSurfaceLabel
-    property int    distanceToSurfaceAltitudeMode:  QGroundControl.AltitudeModeNone
-    property string frontalDistanceLabel
-    property string sideDistanceLabel
 
     property real   _margin:            ScreenTools.defaultFontPixelWidth / 2
     property string _cameraName:        cameraCalc.cameraName.value
diff --git a/src/PlanView/CameraCalcGrid.qml b/src/PlanView/CameraCalcGrid.qml
index 04250e3..f651208 100644
--- a/src/PlanView/CameraCalcGrid.qml
+++ b/src/PlanView/CameraCalcGrid.qml
@@ -87,21 +87,24 @@ Column {
 
             QGCRadioButton {
                 id:                     fixedDistanceRadio
+                leftPadding:            0
                 text:                   distanceToSurfaceLabel
                 checked:                !!cameraCalc.valueSetIsDistance.value
                 onClicked:              cameraCalc.valueSetIsDistance.value = 1
             }
 
             AltitudeFactTextField {
-                fact:                   cameraCalc.distanceToSurface
-                altitudeMode:           distanceToSurfaceAltitudeMode
-                enabled:                fixedDistanceRadio.checked
-                Layout.fillWidth:       true
+                fact:                       cameraCalc.distanceToSurface
+                altitudeMode:               distanceToSurfaceAltitudeMode
+                showAboveTerrainWarning:    false
+                enabled:                    fixedDistanceRadio.checked
+                Layout.fillWidth:           true
             }
 
             QGCRadioButton {
                 id:                     fixedImageDensityRadio
-                text:                   qsTr("Ground Res")
+                leftPadding:            0
+                text:                   qsTr("Grnd Res")
                 checked:                !cameraCalc.valueSetIsDistance.value
                 onClicked:              cameraCalc.valueSetIsDistance.value = 0
             }
@@ -125,9 +128,10 @@ Column {
 
         QGCLabel { text: distanceToSurfaceLabel }
         AltitudeFactTextField {
-            fact:               cameraCalc.distanceToSurface
-            altitudeMode:       distanceToSurfaceAltitudeMode
-            Layout.fillWidth:   true
+            fact:                       cameraCalc.distanceToSurface
+            altitudeMode:               distanceToSurfaceAltitudeMode
+            showAboveTerrainWarning:    false
+            Layout.fillWidth:           true
         }
 
         QGCLabel { text: frontalDistanceLabel }
diff --git a/src/PlanView/CorridorScanEditor.qml b/src/PlanView/CorridorScanEditor.qml
index d4cde24..752e484 100644
--- a/src/PlanView/CorridorScanEditor.qml
+++ b/src/PlanView/CorridorScanEditor.qml
@@ -252,14 +252,7 @@ Rectangle {
                 visible:            tabBar.currentIndex == 1
 
                 CameraCalcCamera {
-                    cameraCalc:                     missionItem.cameraCalc
-                    vehicleFlightIsFrontal:         true
-                    distanceToSurfaceLabel:         qsTr("Altitude")
-                    distanceToSurfaceAltitudeMode:  missionItem.followTerrain ?
-                                                        QGroundControl.AltitudeModeAboveTerrain :
-                                                        missionItem.cameraCalc.distanceToSurfaceRelative
-                    frontalDistanceLabel:           qsTr("Trigger Dist")
-                    sideDistanceLabel:              qsTr("Spacing")
+                    cameraCalc: missionItem.cameraCalc
                 }
             }
         }
diff --git a/src/PlanView/StructureScanEditor.qml b/src/PlanView/StructureScanEditor.qml
index 60f222d..621db0c 100644
--- a/src/PlanView/StructureScanEditor.qml
+++ b/src/PlanView/StructureScanEditor.qml
@@ -247,12 +247,7 @@ Rectangle {
                 visible:            tabBar.currentIndex == 1
 
                 CameraCalcCamera {
-                    cameraCalc:                     missionItem.cameraCalc
-                    vehicleFlightIsFrontal:         false
-                    distanceToSurfaceLabel:         qsTr("Scan Distance")
-                    distanceToSurfaceAltitudeMode:  QGroundControl.AltitudeModeNone
-                    frontalDistanceLabel:           qsTr("Layer Height")
-                    sideDistanceLabel:              qsTr("Trigger Distance")
+                    cameraCalc: missionItem.cameraCalc
                 }
             }
         }
diff --git a/src/PlanView/SurveyItemEditor.qml b/src/PlanView/SurveyItemEditor.qml
index 12b8c3d..8053847 100644
--- a/src/PlanView/SurveyItemEditor.qml
+++ b/src/PlanView/SurveyItemEditor.qml
@@ -280,16 +280,6 @@ Rectangle {
                     spacing:        _margin
                     visible:        transectsHeader.checked
 
-                    /*
-              Temporarily removed due to bug https://github.com/mavlink/qgroundcontrol/issues/7005
-            FactCheckBox {
-                text:       qsTr("Split concave polygons")
-                fact:       _splitConcave
-                visible:    _splitConcave.visible
-                property Fact _splitConcave: missionItem.splitConcavePolygons
-            }
-            */
-
                     QGCOptionsComboBox {
                         Layout.fillWidth: true
 
@@ -405,14 +395,7 @@ Rectangle {
                 visible:            tabBar.currentIndex == 1
 
                 CameraCalcCamera {
-                    cameraCalc:                     missionItem.cameraCalc
-                    vehicleFlightIsFrontal:         true
-                    distanceToSurfaceLabel:         qsTr("Altitude")
-                    distanceToSurfaceAltitudeMode:  missionItem.followTerrain ?
-                                                        QGroundControl.AltitudeModeAboveTerrain :
-                                                        missionItem.cameraCalc.distanceToSurfaceRelative
-                    frontalDistanceLabel:           qsTr("Trigger Dist")
-                    sideDistanceLabel:              qsTr("Spacing")
+                    cameraCalc: missionItem.cameraCalc
                 }
             } // Camera Column