Index: /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 18752)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 18753)
@@ -945,9 +945,9 @@
         if (value != null) {
             try {
-                int i = Integer.parseInt(value);
+                final int i = Integer.parseInt(value);
                 // Sanity checks
                 if ((!GpxConstants.PT_SAT.equals(gpxKey) || i >= 0) &&
                         (!GpxConstants.PT_DGPSID.equals(gpxKey) || (0 <= i && i <= 1023))) {
-                    wpt.put(gpxKey, value);
+                    wpt.put(gpxKey, i);
                 }
             } catch (NumberFormatException e) {
@@ -964,8 +964,8 @@
         if (value != null) {
             try {
-                double d = Double.parseDouble(value);
+                final double d = Double.parseDouble(value);
                 // Sanity checks
                 if (!GpxConstants.PT_MAGVAR.equals(gpxKey) || (0.0 <= d && d < 360.0)) {
-                    wpt.put(gpxKey, value);
+                    wpt.put(gpxKey, d);
                 }
             } catch (NumberFormatException e) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java	(revision 18752)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java	(revision 18753)
@@ -626,5 +626,5 @@
         }
 
-        ArrayList<String> refs = new ArrayList<String>();
+        ArrayList<String> refs = new ArrayList<>();
         if (colored == ColorMode.REF) {
             for (Line segment : getLinesIterable(null)) {
@@ -639,5 +639,5 @@
                 }
             }
-            if (refs.size() > 0) {
+            if (!refs.isEmpty()) {
                 Collections.sort(refs);
                 String[] a = {};
@@ -660,7 +660,7 @@
 
                 if (colored == ColorMode.HDOP) {
-                    color = hdopScale.getColor((Float) trkPnt.get(GpxConstants.PT_HDOP));
+                    color = hdopScale.getColor((Number) trkPnt.get(GpxConstants.PT_HDOP));
                 } else if (colored == ColorMode.QUALITY) {
-                    color = qualityScale.getColor((Integer) trkPnt.get(GpxConstants.RTKLIB_Q));
+                    color = qualityScale.getColor((Number) trkPnt.get(GpxConstants.RTKLIB_Q));
                 } else if (colored == ColorMode.FIX) {
                     Object fixval = trkPnt.get(GpxConstants.PT_FIX);
@@ -671,11 +671,9 @@
                         }
                     }
-                } else if (colored == ColorMode.REF) {
-                    if (trkPnt.get(GpxConstants.PT_DGPSID) != null) {
-                        String refval = trkPnt.get(GpxConstants.PT_DGPSID).toString();
-                        int i = refs.indexOf(refval);
-                        if (i >= 0) {
-                            color = refScale.getColor(i);
-                        }
+                } else if (colored == ColorMode.REF && trkPnt.get(GpxConstants.PT_DGPSID) != null) {
+                    String refVal = trkPnt.get(GpxConstants.PT_DGPSID).toString();
+                    int i = refs.indexOf(refVal);
+                    if (i >= 0) {
+                        color = refScale.getColor(i);
                     }
                 }
@@ -852,5 +850,5 @@
                 if (hdopCircle && trkPnt.get(GpxConstants.PT_HDOP) != null) {
                     // hdop value
-                    float hdop = (Float) trkPnt.get(GpxConstants.PT_HDOP);
+                    float hdop = ((Number) trkPnt.get(GpxConstants.PT_HDOP)).floatValue();
                     if (hdop < 0) {
                         hdop = 0;
Index: /trunk/test/unit/org/openstreetmap/josm/gui/layer/OsmDataLayerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/layer/OsmDataLayerTest.java	(revision 18752)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/layer/OsmDataLayerTest.java	(revision 18753)
@@ -245,13 +245,13 @@
         WayPoint p1 = it.next();
         assertEquals(new LatLon(47.0, 9.0), p1.getCoor());
-        assertEquals("123", p1.get(GpxConstants.PT_ELE));
+        assertEquals(123, (double) p1.get(GpxConstants.PT_ELE));
         assertEquals("2018-08-01T10:00:00Z", String.valueOf(p1.get(GpxConstants.PT_TIME)));
         WayPoint p2 = it.next();
         assertEquals(new LatLon(47.1, 9.1), p2.getCoor());
-        assertEquals("456", p2.get(GpxConstants.PT_ELE));
+        assertEquals(456, (double) p2.get(GpxConstants.PT_ELE));
         assertEquals("2018-08-01T10:01:00Z", String.valueOf(p2.get(GpxConstants.PT_TIME)));
         WayPoint p3 = it.next();
         assertEquals(new LatLon(47.05, 9.05), p3.getCoor());
-        assertEquals("789", p3.get(GpxConstants.PT_ELE));
+        assertEquals(789, (double) p3.get(GpxConstants.PT_ELE));
         assertEquals("2018-08-01T10:02:00Z", String.valueOf(p3.get(GpxConstants.PT_TIME)));
     }
