Index: /trunk/test/data/regress/12312/single_trackpoint.gpx
===================================================================
--- /trunk/test/data/regress/12312/single_trackpoint.gpx	(revision 9339)
+++ /trunk/test/data/regress/12312/single_trackpoint.gpx	(revision 9339)
@@ -0,0 +1,8 @@
+<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
+<gpx version="1.1">
+  <trk>
+    <trkseg>
+      <trkpt lat="48.1386" lon="11.573"/>
+    </trkseg>
+  </trk>
+</gpx>
Index: /trunk/test/unit/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelperTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelperTest.java	(revision 9339)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelperTest.java	(revision 9339)
@@ -0,0 +1,48 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer.gpx;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.io.GpxReader;
+import org.xml.sax.SAXException;
+
+/**
+ * Unit tests of {@link GpxDrawHelper} class.
+ */
+public class GpxDrawHelperTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init(false);
+    }
+
+    /**
+     * Non-regression test for ticket <a href="https://josm.openstreetmap.de/ticket/12312">#12312</a>.
+     * @throws IOException if any I/O error occurs
+     * @throws FileNotFoundException if the data file is not found
+     * @throws SAXException if any SAX error occurs
+     */
+    @Test
+    public void testTicket12312() throws FileNotFoundException, IOException, SAXException {
+        try (InputStream in = new FileInputStream((TestUtils.getRegressionDataFile(12312, "single_trackpoint.gpx")))) {
+            GpxReader reader = new GpxReader(in);
+            reader.parse(false);
+            GpxDrawHelper gdh = new GpxDrawHelper(reader.getGpxData());
+            Main.pref.put("draw.rawgps.colors.dynamic.layer 12312", true);
+            Main.pref.putInteger("draw.rawgps.colors.layer 12312", 1); // ColorMode.VELOCITY
+            gdh.readPreferences("12312");
+            gdh.calculateColors();
+        }
+    }
+}
