diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js
index 1677a08b3ea7978ea19c3fe62482e4837d74bafc..28c1d7d393a7b185af6bb213164577187bf83e77 100644
--- a/frontend-js/src/main/js/ServerConnector.js
+++ b/frontend-js/src/main/js/ServerConnector.js
@@ -1693,6 +1693,32 @@ ServerConnector.addOverlay = function (params) {
   });
 };
 
+ServerConnector.addOverlayFromString = function(name, content) {
+  var fileName = name + ".txt";
+  var overlay = new DataOverlay({
+    name: name,
+    description: "",
+    filename: fileName
+  });
+  var fileContent = new TextEncoder("UTF8").encode(content);  
+  self = this;
+  return self.getProjectId().then(function (projectid) {
+    
+    return ServerConnector.uploadFile({
+      filename: fileName,
+      content: fileContent
+    }).then(function (file) {
+      return ServerConnector.addOverlay({
+        fileId: file.id,
+        overlay: overlay,
+        projectId: self.getProjectId()
+      });
+    }).then(function (result) {      
+      return result;
+    });
+  });
+}
+
 ServerConnector.updateOverlay = function (overlay) {
   var self = this;
   var queryParams = {
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java
index 0b7757109bb776e1595ee142badf23401b33fcb2..0d412bce85a455cd107aaa2ee8f818152ad856aa 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java
@@ -1,5 +1,6 @@
 package lcsb.mapviewer.api.projects;
 
+import java.awt.Color;
 import java.awt.geom.Path2D;
 import java.awt.geom.PathIterator;
 import java.io.ByteArrayInputStream;
@@ -330,13 +331,14 @@ public class ProjectRestImpl extends BaseRestImpl {
       String backgroundOverlayId, String overlayIds, String zoomLevel, String polygonString)
       throws SecurityException, QueryException, IOException, InvalidColorSchemaException, CommandExecutionException,
       ConverterException, InconsistentModelException {
+	  User user = getUserService().getUserByToken(token);
     Model topModel = getModelService().getLastModelByProjectId(projectId, token);
     if (topModel == null) {
       throw new ObjectNotFoundException("Project with given id doesn't exist");
     }
-
+    
     Model originalModel = topModel.getSubmodelById(modelId);
-
+        
     if (originalModel == null) {
       throw new ObjectNotFoundException("Model with given id doesn't exist");
     }
@@ -347,6 +349,32 @@ public class ProjectRestImpl extends BaseRestImpl {
     // create model bounded by the polygon
     SubModelCommand subModelCommand = new SubModelCommand(originalModel, polygon);
     Model part = subModelCommand.execute();
+    
+    //Get list of overlay ids
+    String[] overlayIdsList;    
+    if (overlayIds == null || overlayIds.trim().isEmpty()) {    	
+    	overlayIdsList = new String[0];
+    }
+    else {    	
+    	overlayIdsList = overlayIds.split(",");
+    }    
+    // Remove all colors
+    if (overlayIdsList.length > 0)
+    {
+	    
+	    for (Element element: part.getElements()){
+	    	element.setColor(Color.WHITE);
+	    }
+    }
+    // Color with overlays
+    for (String overlayId: overlayIdsList){
+    	Layout overlay = layoutService.getLayoutById(Integer.parseInt(overlayId.trim()), token);
+    	
+    	ColorSchemaReader reader = new ColorSchemaReader();
+    	Collection<ColorSchema> schemas = reader.readColorSchema(overlay.getInputData().getFileContent());
+  
+    	new ColorModelCommand(part, schemas, getUserService().getColorExtractorForUser(user)).execute();    	
+    }
 
     IConverter parser = getModelParser(handlerClass);
     InputStream is = parser.exportModelToInputStream(part);