Index: trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 5951)
+++ trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 5952)
@@ -1316,7 +1316,8 @@
             double a = area / (aValue*aValue);
             boolean lowerOnly = Main.pref.getBoolean("system_of_measurement.use_only_lower_unit", false);
-            if (!lowerOnly && areaCustomValue > 0 && a > areaCustomValue / aValue*aValue && a < bValue*bValue / aValue*aValue)
+            boolean customAreaOnly = Main.pref.getBoolean("system_of_measurement.use_only_custom_area_unit", false);
+            if ((!lowerOnly && areaCustomValue > 0 && a > areaCustomValue / (aValue*aValue) && a < (bValue*bValue) / (aValue*aValue)) || customAreaOnly)
                 return formatText(area / areaCustomValue, areaCustomName);
-            else if (!lowerOnly && a >= bValue*bValue / aValue*aValue)
+            else if (!lowerOnly && a >= (bValue*bValue) / (aValue*aValue))
                 return formatText(area / (bValue*bValue), bName+"\u00b2");
             else if (a < 0.01)
@@ -1347,5 +1348,5 @@
      * @since 3406
      */
-    public static final SystemOfMeasurement IMPERIAL_SOM = new SystemOfMeasurement(0.3048, "ft", 1609.344, "mi");
+    public static final SystemOfMeasurement IMPERIAL_SOM = new SystemOfMeasurement(0.3048, "ft", 1609.344, "mi", 4046.86, "ac");
     
     /**
