diff --git a/applications/utilities/mesh/manipulation/transformPoints/transformPoints.C b/applications/utilities/mesh/manipulation/transformPoints/transformPoints.C
index 7f695abffb1b7eef3944c0f5d21999589361f6f7..c3e692077ef3da04dc1ba8d7fbb009dbab30467f 100644
--- a/applications/utilities/mesh/manipulation/transformPoints/transformPoints.C
+++ b/applications/utilities/mesh/manipulation/transformPoints/transformPoints.C
@@ -169,14 +169,22 @@ int main(int argc, char *argv[])
     (
         "translate",
         "vector",
-        "Translate by specified <vector> - eg, '(1 0 0)' before rotations"
+        "Translate by specified <vector> before rotations"
+    );
+    argList::addBoolOption
+    (
+        "auto-centre",
+        "Use bounding box centre as centre for rotations"
     );
     argList::addOption
     (
-        "origin",
+        "centre",
         "point",
-        "Use specified <point> as origin for rotations"
+        "Use specified <point> as centre for rotations"
     );
+    argList::addOptionCompat("auto-centre", {"auto-origin", 2206});
+    argList::addOptionCompat("centre", {"origin", 2206});
+
     argList::addOption
     (
         "rotate",
@@ -290,18 +298,24 @@ int main(int argc, char *argv[])
     if (args.readIfPresent("translate", v))
     {
         Info<< "Translating points by " << v << endl;
-
         points += v;
     }
 
-    vector origin;
-    const bool useOrigin = args.readIfPresent("origin", origin);
-    if (useOrigin)
+    vector rotationCentre;
+    bool useRotationCentre = args.readIfPresent("centre", rotationCentre);
+    if (args.found("auto-centre") && !useRotationCentre)
+    {
+        useRotationCentre = true;
+        rotationCentre = boundBox(points).centre();
+    }
+
+    if (useRotationCentre)
     {
-        Info<< "Set origin for rotations to " << origin << endl;
-        points -= origin;
+        Info<< "Set centre of rotation to " << rotationCentre << endl;
+        points -= rotationCentre;
     }
 
+
     if (args.found("rotate"))
     {
         Pair<vector> n1n2
@@ -380,6 +394,13 @@ int main(int argc, char *argv[])
         }
     }
 
+    if (useRotationCentre)
+    {
+        Info<< "Unset centre of rotation from " << rotationCentre << endl;
+        points += rotationCentre;
+    }
+
+
     List<scalar> scaling;
     if (args.readListIfPresent("scale", scaling))
     {
@@ -410,12 +431,6 @@ int main(int argc, char *argv[])
         }
     }
 
-    if (useOrigin)
-    {
-        Info<< "Unset origin for rotations from " << origin << endl;
-        points += origin;
-    }
-
 
     // Set the precision of the points data to 10
     IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
diff --git a/applications/utilities/surface/surfaceTransformPoints/surfaceTransformPoints.C b/applications/utilities/surface/surfaceTransformPoints/surfaceTransformPoints.C
index a3ba6687bcbeca4555f016bd454295cee14a4de1..369e4587f04e439a85f87dc8866b39875b571a33 100644
--- a/applications/utilities/surface/surfaceTransformPoints/surfaceTransformPoints.C
+++ b/applications/utilities/surface/surfaceTransformPoints/surfaceTransformPoints.C
@@ -112,12 +112,20 @@ int main(int argc, char *argv[])
         "vector",
         "Translate by specified <vector> - eg, '(1 0 0)' before rotations"
     );
+    argList::addBoolOption
+    (
+        "auto-centre",
+        "Use bounding box centre as centre for rotations"
+    );
     argList::addOption
     (
-        "origin",
+        "centre",
         "point",
-        "Use specified <point> as origin for rotations"
+        "Use specified <point> as centre for rotations"
     );
+    argList::addOptionCompat("auto-centre", {"auto-origin", 2206});
+    argList::addOptionCompat("centre", {"origin", 2206});
+
     argList::addOption
     (
         "rotate",
@@ -229,18 +237,24 @@ int main(int argc, char *argv[])
     if (args.readIfPresent("translate", v))
     {
         Info<< "Translating points by " << v << endl;
-
         points += v;
     }
 
-    vector origin(Zero);
-    const bool useOrigin = args.readIfPresent("origin", origin);
-    if (useOrigin)
+    vector rotationCentre;
+    bool useRotationCentre = args.readIfPresent("centre", rotationCentre);
+    if (args.found("auto-centre") && !useRotationCentre)
+    {
+        useRotationCentre = true;
+        rotationCentre = boundBox(points).centre();
+    }
+
+    if (useRotationCentre)
     {
-        Info<< "Set origin for rotations to " << origin << endl;
-        points -= origin;
+        Info<< "Set centre of rotation to " << rotationCentre << endl;
+        points -= rotationCentre;
     }
 
+
     if (args.found("rotate"))
     {
         Pair<vector> n1n2
@@ -299,6 +313,13 @@ int main(int argc, char *argv[])
         points = transform(rot, points);
     }
 
+    if (useRotationCentre)
+    {
+        Info<< "Unset centre of rotation from " << rotationCentre << endl;
+        points += rotationCentre;
+    }
+
+
     List<scalar> scaling;
     if (args.readListIfPresent("scale", scaling))
     {
@@ -338,11 +359,6 @@ int main(int argc, char *argv[])
         }
     }
 
-    if (useOrigin)
-    {
-        Info<< "Unset origin for rotations from " << origin << endl;
-        points += origin;
-    }
 
     surf1.movePoints(points);
     surf1.write(exportName, writeFileType);