Index: src/org/openstreetmap/josm/data/projection/proj/TransverseMercator.java
===================================================================
--- src/org/openstreetmap/josm/data/projection/proj/TransverseMercator.java	(Revision 11543)
+++ src/org/openstreetmap/josm/data/projection/proj/TransverseMercator.java	(Arbeitskopie)
@@ -106,6 +106,16 @@
      */
     private double ml0;
 
+    /**
+     * The rectified bearing of the central line, in radians.
+     */
+    protected double rectifiedGridAngle;
+
+    /**
+     * Sine and Cosine values for the coordinate system rotation angle
+     */
+    private double sinrot, cosrot;
+
     @Override
     public String getName() {
         return tr("Transverse Mercator");
@@ -124,6 +134,15 @@
         eb2 = params.ellps.eb2;
         latitudeOfOrigin = params.lat0 == null ? 0 : Math.toRadians(params.lat0);
         ml0 = mlfn(latitudeOfOrigin, Math.sin(latitudeOfOrigin), Math.cos(latitudeOfOrigin));
+
+        if (params.gamma != null) {
+                rectifiedGridAngle = Math.toRadians(params.gamma);
+        } else {
+                rectifiedGridAngle = 0.0;
+        }
+        sinrot = Math.sin(rectifiedGridAngle);
+        cosrot = Math.cos(rectifiedGridAngle);
+
     }
 
     @Override
@@ -130,6 +149,7 @@
     public double[] project(double y, double x) {
         double sinphi = Math.sin(y);
         double cosphi = Math.cos(y);
+        double u, v;
 
         double t = (Math.abs(cosphi) > EPSILON) ? sinphi/cosphi : 0;
         t *= t;
@@ -150,11 +170,19 @@
             FC5 * als * (5.0 + t*(t - 18.0) + n*(14.0 - 58.0*t) +
             FC7 * als * (61.0+ t*(t*(179.0 - t) - 479.0)))));
 
+        u=x; v=y;
+        x = v * cosrot + u * sinrot;
+        y = u * cosrot - v * sinrot;
+
         return new double[] {x, y};
     }
 
     @Override
     public double[] invproject(double x, double y) {
+        double v = x * cosrot - y * sinrot;
+        double u = y * cosrot + x * sinrot;
+        x=u; y=v;
+
         double phi = invMlfn(ml0 + y);
 
         if (Math.abs(phi) >= Math.PI/2) {
