diff --git a/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.service.ts b/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.service.ts
index 6f2bcc2397fe99f410b9f4f0f96a1d068dff56b9..56e87c06579b66207560caf92611ca2ab83b6c39 100644
--- a/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.service.ts
+++ b/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.service.ts
@@ -1,7 +1,7 @@
 import { Inject, Injectable, OnDestroy, Optional } from "@angular/core";
 import { select, Store } from "@ngrx/store";
 import { BehaviorSubject, combineLatest, from, merge, Observable, of, Subject, Subscription } from "rxjs";
-import { distinctUntilChanged, filter, map, shareReplay, switchMap, withLatestFrom } from "rxjs/operators";
+import { debounceTime, distinctUntilChanged, filter, map, shareReplay, switchMap, withLatestFrom } from "rxjs/operators";
 import { viewerStateCustomLandmarkSelector, viewerStateSelectedParcellationSelector, viewerStateSelectedRegionsSelector, viewerStateSelectedTemplateSelector } from "src/services/state/viewerState/selectors";
 import { getRgb, IColorMap, INgLayerCtrl, INgLayerInterface, TNgLayerCtrl } from "./layerCtrl.util";
 import { getMultiNgIdsRegionsLabelIndexMap } from "../constants";
@@ -13,6 +13,12 @@ import { getShader, PMAP_DEFAULT_CONFIG } from "src/util/constants";
 import { ngViewerActionAddNgLayer, ngViewerActionRemoveNgLayer, ngViewerSelectorClearView, ngViewerSelectorLayers } from "src/services/state/ngViewerState.store.helper";
 import { serialiseParcellationRegion } from 'common/util'
 
+export const BACKUP_COLOR = {
+  red: 255,
+  green: 255,
+  blue: 255
+}
+
 export function getAuxMeshesAndReturnIColor(auxMeshes: IAuxMesh[]): IColorMap{
   const returnVal: IColorMap = {}
   for (const auxMesh of auxMeshes as IAuxMesh[]) {
@@ -35,6 +41,11 @@ export class NehubaLayerControlService implements OnDestroy{
 
   static PMAP_LAYER_NAME = 'regional-pmap'
 
+  private selectedRegion$ = this.store$.pipe(
+    select(viewerStateSelectedRegionsSelector),
+    shareReplay(1),
+  )
+
   private selectedParcellation$ = this.store$.pipe(
     select(viewerStateSelectedParcellationSelector)
   )
@@ -62,6 +73,7 @@ export class NehubaLayerControlService implements OnDestroy{
         return returnVal
       })
     ),
+    this.selectedRegion$,
     this.selectedTemplateSelector$.pipe(
       map(template => {
         const { auxMeshes = [] } = template || {}
@@ -75,12 +87,30 @@ export class NehubaLayerControlService implements OnDestroy{
       })
     ),
   ]).pipe(
-    map(([ regions, ...auxMeshesArr ]) => {
+    map(([ regions, selReg, ...auxMeshesArr ]) => {
       
       const returnVal: IColorMap = {}
-
-      for (const key in regions) {
-        returnVal[key] = regions[key]
+      if (selReg.length === 0) {
+        for (const key in regions) {
+          returnVal[key] = regions[key]
+        }
+      } else {
+        /**
+         * if selected regions are non empty
+         * set the selected regions to show color,
+         * but the rest to show white 
+         */
+        for (const key in regions) {
+          const colorMap = {}
+          returnVal[key] = colorMap
+          for (const lblIdx in regions[key]) {
+            if (selReg.some(r => r.ngId === key && r.labelIndex === Number(lblIdx))) {
+              colorMap[lblIdx] = regions[key][lblIdx]
+            } else {
+              colorMap[lblIdx] = BACKUP_COLOR
+            }
+          }
+        }
       }
 
       for (const auxMeshes of auxMeshesArr) {
@@ -241,7 +271,13 @@ export class NehubaLayerControlService implements OnDestroy{
   public overwriteColorMap$ = new BehaviorSubject<IColorMap>(null)
 
   public setColorMap$: Observable<IColorMap> = merge(
-    this.activeColorMap$,
+    this.activeColorMap$.pipe(
+      // TODO this is a dirty fix
+      // it seems, sometimes, overwritecolormap and activecolormap can emit at the same time
+      // (e.g. when reg selection changes)
+      // this ensures that the activecolormap emits later, and thus take effect over overwrite colormap
+      debounceTime(16),
+    ),
     this.overwriteColorMap$.pipe(
       filter(v => !!v),
     )
@@ -276,9 +312,7 @@ export class NehubaLayerControlService implements OnDestroy{
     /**
      * selectedRegions
      */
-    this.store$.pipe(
-      select(viewerStateSelectedRegionsSelector)
-    ),
+    this.selectedRegion$,
     /**
      * if layer contains non mixable layer
      */
diff --git a/src/viewerModule/nehuba/mesh.service/mesh.service.ts b/src/viewerModule/nehuba/mesh.service/mesh.service.ts
index d991aff9e9bafc856dcd6d00cd058681f8d66eac..dd17226af19ad4c3ec2dfc8f10dbc79a96e53635 100644
--- a/src/viewerModule/nehuba/mesh.service/mesh.service.ts
+++ b/src/viewerModule/nehuba/mesh.service/mesh.service.ts
@@ -101,11 +101,24 @@ export class NehubaMeshService implements OnDestroy {
 
   public loadMeshes$: Observable<IMeshesToLoad> = combineLatest([
     this.auxMeshes$,
+    this.selectedTemplate$,
     this.selectedParc$,
     this.selectedRegions$,
   ]).pipe(
-    switchMap(([auxMeshes, parc, selRegions]) => {
-      const obj = getLayerNameIndiciesFromParcRs(parc, selRegions)
+    switchMap(([auxMeshes, template, parc, selRegions]) => {
+      
+      /**
+       * if colin 27 and julich brain 2.9.0, select all regions
+       */
+      let overrideSelRegion = null
+      if (
+        template['@id'] === 'minds/core/referencespace/v1.0.0/7f39f7be-445b-47c0-9791-e971c0b6d992' &&
+        parc['@id'] === 'minds/core/parcellationatlas/v1.0.0/94c1125b-b87e-45e4-901c-00daee7f2579-290'
+      ) {
+        overrideSelRegion = []
+      }
+
+      const obj = getLayerNameIndiciesFromParcRs(parc, overrideSelRegion || selRegions)
       const { auxillaryMeshIndices = [] } = parc
       const arr: IMeshesToLoad[] = []
       for (const key in obj) {