Index: /trunk/src/org/openstreetmap/josm/io/session/SessionReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/session/SessionReader.java	(revision 17658)
+++ /trunk/src/org/openstreetmap/josm/io/session/SessionReader.java	(revision 17659)
@@ -4,4 +4,5 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.Color;
 import java.awt.GraphicsEnvironment;
 import java.io.BufferedInputStream;
@@ -46,4 +47,5 @@
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.Logging;
@@ -618,4 +620,13 @@
                 }
             }
+            String colorString = el.getAttribute("color");
+            if (colorString != null) {
+                try {
+                    Color color = ColorHelper.html2color(colorString);
+                    layer.setColor(color);
+                } catch (RuntimeException ex) {
+                    Logging.warn("Cannot parse color " + colorString);
+                }
+            }
             layer.setName(names.get(entry.getKey()));
             layers.add(layer);
Index: /trunk/src/org/openstreetmap/josm/io/session/SessionWriter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/session/SessionWriter.java	(revision 17658)
+++ /trunk/src/org/openstreetmap/josm/io/session/SessionWriter.java	(revision 17659)
@@ -44,4 +44,5 @@
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
+import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.Logging;
@@ -239,4 +240,7 @@
             if (!Utils.equalsEpsilon(layer.getOpacity(), 1.0)) {
                 el.setAttribute("opacity", Double.toString(layer.getOpacity()));
+            }
+            if (layer.getColor() != null) {
+                el.setAttribute("color", ColorHelper.color2html(layer.getColor()));
             }
             Set<Layer> deps = dependencies.get(layer);
Index: /trunk/test/data/sessions/gpx_markers.jos
===================================================================
--- /trunk/test/data/sessions/gpx_markers.jos	(revision 17658)
+++ /trunk/test/data/sessions/gpx_markers.jos	(revision 17659)
@@ -16,5 +16,5 @@
             <file>layers/01/data.gpx</file>
         </layer>
-        <layer index="2" name="Marker layer name" type="markers" version="0.1" visible="true">
+        <layer color="#34567812" index="2" name="Marker layer name" opacity="0.5" type="markers" version="0.1" visible="true">
             <file>layers/02/data.gpx</file>
         </layer>
Index: /trunk/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java	(revision 17658)
+++ /trunk/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java	(revision 17659)
@@ -6,4 +6,5 @@
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
+import java.awt.Color;
 import java.io.ByteArrayInputStream;
 import java.io.File;
@@ -119,4 +120,8 @@
         assertEquals(gpx.getName(), "GPX layer name");
         assertEquals(marker.getName(), "Marker layer name");
+        assertEquals(1.0, gpx.getOpacity());
+        assertEquals(0.5, marker.getOpacity());
+        assertEquals(new Color(0x204060), gpx.getColor());
+        assertEquals(new Color(0x12345678, true), marker.getColor());
     }
 
Index: /trunk/test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java	(revision 17658)
+++ /trunk/test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java	(revision 17659)
@@ -2,4 +2,5 @@
 package org.openstreetmap.josm.io.session;
 
+import java.awt.Color;
 import java.io.File;
 import java.io.IOException;
@@ -154,5 +155,8 @@
 
     private MarkerLayer createMarkerLayer(GpxLayer gpx) {
-        return new MarkerLayer(gpx.data, "Marker layer name", gpx.getAssociatedFile(), gpx);
+        MarkerLayer layer = new MarkerLayer(gpx.data, "Marker layer name", gpx.getAssociatedFile(), gpx);
+        layer.setOpacity(0.5);
+        layer.setColor(new Color(0x12345678, true));
+        return layer;
     }
 
