diff --git a/CHANGELOG b/CHANGELOG
index effe44434596dd2c4040092edcea460f1e5fb9cf..91b962f77884865c8ebc5a50afcc9828e9094b4a 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -3,6 +3,8 @@ minerva (14.0.0~alpha.1) unstable; urgency=low
   * Small improvement: debian package can be installed on debian:buster (#879)
   * Bug fix: REST API bioEntities:search method didn't limit results to the 
     submodel id (#880)
+  * Bug fix: Empty Overlay colours were not preserved during export to 
+    CellDesigner (#714)
 
  -- Piotr Gawron <piotr.gawron@uni.lu>  Mon, 12 Aug 2019 10:00:00 +0200
 
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/ModelController.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/ModelController.java
index de89361e932972474b2adc890549ed18a9e8e98e..a2b31124c8dd31c7cddd5d9f874f70a2c325fb05 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/ModelController.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/ModelController.java
@@ -94,6 +94,7 @@ public class ModelController extends BaseController {
       @PathVariable(value = "modelId") String modelId,
       @RequestParam(value = "handlerClass") String handlerClass,
       @RequestParam(value = "overlayIds", defaultValue = "") String overlayIds,
+      @RequestParam(value = "backgroundOverlayId", defaultValue = "") String backgroundOverlayId,
       @RequestParam(value = "polygonString", defaultValue = "") String polygonString,
       @RequestParam(value = "elementIds", defaultValue = "") String elementIds,
       @RequestParam(value = "reactionIds", defaultValue = "") String reactionIds)
@@ -101,7 +102,7 @@ public class ModelController extends BaseController {
       ConverterException, InconsistentModelException {
     User user = userService.getUserByLogin(authentication.getName());
     FileEntry file = modelController.getModelAsModelFile(
-        projectId, modelId, handlerClass, overlayIds, polygonString, elementIds, reactionIds, user);
+        projectId, modelId, handlerClass, overlayIds, polygonString, elementIds, reactionIds, user, backgroundOverlayId);
     return ResponseEntity.ok().contentLength(file.getFileContent().length)
         .contentType(MediaType.APPLICATION_OCTET_STREAM)
         .header("Content-Disposition", "attachment; filename=" + file.getOriginalFileName())
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/ModelRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/ModelRestImpl.java
index da7ac0174e87f935951793507aacaec67e4c6570..43c25bce79f8d9f1420014eb479ee9b11fbbd382 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/ModelRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/ModelRestImpl.java
@@ -170,9 +170,12 @@ public class ModelRestImpl extends BaseRestImpl {
 
   public FileEntry getModelAsModelFile(String projectId, String modelId, String handlerClass,
       String overlayIds, String polygonString, String elementIds,
-      String reactionIds, User user)
+      String reactionIds, User user, String backgroundOverlayId)
       throws QueryException, IOException, InvalidColorSchemaException, CommandExecutionException,
       ConverterException, InconsistentModelException {
+
+    Project project = getProjectService().getProjectByProjectId(projectId);
+
     Model originalModel = getModelByModelId(projectId, modelId);
 
     Path2D polygon = stringToPolygon(polygonString, originalModel);
@@ -188,10 +191,24 @@ public class ModelRestImpl extends BaseRestImpl {
     String[] overlayIdsList = stringListToArray(overlayIds);
     // Remove all colors
     if (overlayIdsList.length > 0) {
-      for (Element element : part.getElements()) {
-        element.setColor(Color.WHITE);
+      new ClearColorModelCommand(part).execute();
+    }
+    
+    if (!backgroundOverlayId.equals("")) {
+      Layout overlay = project.getLayoutByIdentifier(Integer.valueOf(backgroundOverlayId));
+
+      if (overlay == null) {
+        throw new ObjectNotFoundException("Unknown overlay in model. Layout.id=" + backgroundOverlayId);
       }
+      if (overlay.getTitle().equals(BuildInLayout.CLEAN.getTitle())) {
+        // this might not return true if we change CLEAN.title in future...
+
+        // if it's clean then remove coloring
+        new ClearColorModelCommand(part).execute();
+      }       
     }
+
+    
     // Color with overlays
     for (String overlayId : overlayIdsList) {
       Layout overlay = layoutService.getLayoutById(Integer.parseInt(overlayId.trim()));
diff --git a/rest-api/src/test/java/lcsb/mapviewer/api/projects/models/ModelRestImplTest.java b/rest-api/src/test/java/lcsb/mapviewer/api/projects/models/ModelRestImplTest.java
index 0c494545f71472102125b1a720c6dbba08a300b6..b16271efa93f1998bf8cd6005d7e8821491f7521 100644
--- a/rest-api/src/test/java/lcsb/mapviewer/api/projects/models/ModelRestImplTest.java
+++ b/rest-api/src/test/java/lcsb/mapviewer/api/projects/models/ModelRestImplTest.java
@@ -108,20 +108,20 @@ public class ModelRestImplTest extends RestTestFunctions {
   @Test(expected = QueryException.class)
   public void testGetModelAsFileModel() throws Exception {
     ModelRestImpl modelRest = createMockProjectRest("testFiles/model/sample.xml");
-    modelRest.getModelAsModelFile("sample", "0", "", "", "", null, null, null);
+    modelRest.getModelAsModelFile("sample", "0", "", "", "", null, null, null, "");
   }
 
   @Test
   public void testGetModelAsFileModel2() throws Exception {
     ModelRestImpl modelRest = createMockProjectRest("testFiles/model/sample.xml");
     modelRest.getModelAsModelFile("sample", "0", CellDesignerXmlParser.class.getCanonicalName(), "",
-        "0,0;90,0;90,90;90,0", null, null, null);
+        "0,0;90,0;90,90;90,0", null, null, null, "");
   }
 
   @Test(expected = QueryException.class)
   public void testGetModelAsFileModel3() throws Exception {
     ModelRestImpl modelRest = createMockProjectRest("testFiles/model/sample.xml");
-    modelRest.getModelAsModelFile("sample", "0", "", "", "0,0;90,0;90,90;90,0", null, null, null);
+    modelRest.getModelAsModelFile("sample", "0", "", "", "0,0;90,0;90,90;90,0", null, null, null, "");
   }
 
   @Test