diff --git a/Source/DasherVR/Private/Dasher3DWidget.cpp b/Source/DasherVR/Private/Dasher3DWidget.cpp
index f5d673a20e03e3b762227f32cf764da7c5d4055f..d52de31a7a7e9b89ca5e548c6e052c34480117e7 100644
--- a/Source/DasherVR/Private/Dasher3DWidget.cpp
+++ b/Source/DasherVR/Private/Dasher3DWidget.cpp
@@ -78,9 +78,9 @@ std::pair<Dasher::screenint, Dasher::screenint> ADasher3DWidget::TextSize(Label*
 	return {CharScale.X, CharScale.Y};
 }
 
-void ADasher3DWidget::DrawString(Label* label, Dasher::screenint x, Dasher::screenint y, unsigned iFontSize, int iColour){}
+void ADasher3DWidget::DrawString(Label* label, Dasher::screenint x, Dasher::screenint y, unsigned iFontSize, const Dasher::ColorPalette::Color& color){}
 
-void ADasher3DWidget::DrawCube(Dasher::screenint posX, Dasher::screenint posY, Dasher::screenint sizeX, Dasher::screenint sizeY, Dasher::myint extrusionLevel, Dasher::myint groupRecursionDepth, Dasher::myint levelUnderCrosshair, int Colour, int iOutlineColour, int iThickness) {
+void ADasher3DWidget::DrawCube(Dasher::screenint posX, Dasher::screenint posY, Dasher::screenint sizeX, Dasher::screenint sizeY, Dasher::myint extrusionLevel, Dasher::myint groupRecursionDepth, Dasher::myint levelUnderCrosshair, const Dasher::ColorPalette::Color& color, const Dasher::ColorPalette::Color& outlineColor, int iThickness) {
 		
 	if (sizeX == 0 || sizeY == 0) return;
 	const FVector Scale = FVector(FVector2D(sizeX, sizeY) / DrawingSize, 
@@ -88,14 +88,7 @@ void ADasher3DWidget::DrawCube(Dasher::screenint posX, Dasher::screenint posY, D
 							+ FVector(extrusionLevel,extrusionLevel,0)*FLT_EPSILON;
 	const FVector2D Translation = FVector2D(posX, posY) / DrawingSize - FVector2D(0.5f, 0.5f);
 	
-	FLinearColor RectColor;
-
-	if (ColorPalette) {
-		RectColor = FLinearColor(ColorPalette->Colors[Colour].Red / 255.0, ColorPalette->Colors[Colour].Green / 255.0, ColorPalette->Colors[Colour].Blue / 255.0);
-	}
-	else {
-		RectColor = FLinearColor::Blue;
-	}
+	const FLinearColor RectColor = FLinearColor(color.Red / 255.0, color.Green / 255.0, color.Blue / 255.0, color.Alpha / 255.0);
 
 	BackBuffer->first.Add(FTransform(FQuat::Identity, FVector(Translation, -ExtrusionLevelToHeight(levelUnderCrosshair)) * WorldToMeters, Scale));
 	BackBuffer->second.Add(RectColor.R);
@@ -108,7 +101,7 @@ void ADasher3DWidget::DrawCube(Dasher::screenint posX, Dasher::screenint posY, D
 }
 
 // x & y are given as upper left corner of the character
-void ADasher3DWidget::Draw3DLabel(Label* label, Dasher::screenint x, Dasher::screenint y, Dasher::myint extrusionLevel, Dasher::myint groupRecursionDepth, Dasher::myint levelUnderCrosshair, unsigned int iFontSize, int iColour) {
+void ADasher3DWidget::Draw3DLabel(Label* label, Dasher::screenint x, Dasher::screenint y, Dasher::myint extrusionLevel, Dasher::myint groupRecursionDepth, Dasher::myint levelUnderCrosshair, unsigned int iFontSize, const Dasher::ColorPalette::Color& color) {
 		float CharacterOffset = 0; // in Meters
 		
 		for (int i = 0; i < label->m_strText.size(); i++)
@@ -154,17 +147,17 @@ void ADasher3DWidget::Draw3DLabel(Label* label, Dasher::screenint x, Dasher::scr
 		}
 }
 
-void ADasher3DWidget::DrawRectangle(Dasher::screenint x1, Dasher::screenint y1, Dasher::screenint x2, Dasher::screenint y2, int Colour, int iOutlineColour, int iThickness)
+void ADasher3DWidget::DrawRectangle(Dasher::screenint x1, Dasher::screenint y1, Dasher::screenint x2, Dasher::screenint y2, const Dasher::ColorPalette::Color& color, const Dasher::ColorPalette::Color& outlineColor, int iThickness)
 {
-	DrawCube((x2 - x1)/2 + x1, (y2-y1)/2 + y1, x2-x1, y2-y1, 1, 0, 0, Colour, iOutlineColour, iThickness);
+	DrawCube((x2 - x1)/2 + x1, (y2-y1)/2 + y1, x2-x1, y2-y1, 1, 0, 0, color, outlineColor, iThickness);
 }
 
-void ADasher3DWidget::DrawCircle(Dasher::screenint iCX, Dasher::screenint iCY, Dasher::screenint iR, int iFillColour, int iLineColour, int iLineWidth)
+void ADasher3DWidget::DrawCircle(Dasher::screenint iCX, Dasher::screenint iCY, Dasher::screenint iR, const Dasher::ColorPalette::Color& fillColor, const Dasher::ColorPalette::Color& lineColor, int iLineWidth)
 {
 	//Todo
 }
 
-void ADasher3DWidget::Polyline(point* Points, int Number, int iWidth, int Colour)
+void ADasher3DWidget::Polyline(point* Points, int Number, int iWidth, const Dasher::ColorPalette::Color& color)
 {
 	for(int i = 1; i < Number; i++)
 	{
@@ -175,14 +168,7 @@ void ADasher3DWidget::Polyline(point* Points, int Number, int iWidth, int Colour
 		const FVector2D Translation = FVector2D((p2.x - p1.x)/2.0f + p1.x, (p2.y - p1.y)/2.0f + p1.y) / DrawingSize - FVector2D(0.5f, 0.5f);
 		const FQuat Rotation = FQuat().MakeFromEuler({0,0,FMath::RadiansToDegrees(FMath::Atan2(static_cast<float>(p2.y - p1.y), static_cast<float>(p2.x - p1.x)))});
 		
-		FLinearColor RectColor;
-
-		if (ColorPalette) {
-			RectColor = FLinearColor(ColorPalette->Colors[Colour].Red / 255.0, ColorPalette->Colors[Colour].Green / 255.0, ColorPalette->Colors[Colour].Blue / 255.0);
-		}
-		else {
-			RectColor = FLinearColor::Black;
-		}
+		const FLinearColor RectColor = FLinearColor(color.Red / 255.0, color.Green / 255.0, color.Blue / 255.0, color.Alpha / 255.0);
 
 		BackBuffer->first.Add(FTransform(Rotation, FVector(Translation, 0) * WorldToMeters, Scale));
 		BackBuffer->second.Add(RectColor.R);
@@ -195,7 +181,7 @@ void ADasher3DWidget::Polyline(point* Points, int Number, int iWidth, int Colour
 	}
 }
 
-void ADasher3DWidget::Polygon(point* Points, int Number, int fillColour, int outlineColour, int lineWidth)
+void ADasher3DWidget::Polygon(point* Points, int Number, const Dasher::ColorPalette::Color& fillColor, const Dasher::ColorPalette::Color& outlineColor, int lineWidth)
 {
 	//Todo
 }
@@ -238,11 +224,6 @@ void ADasher3DWidget::Display()
 
 }
 
-void ADasher3DWidget::SetColourScheme(const Dasher::CColourIO::ColourInfo* pColourScheme)
-{
-	ColorPalette = pColourScheme;
-}
-
 bool ADasher3DWidget::IsPointVisible(Dasher::screenint x, Dasher::screenint y)
 {
 	return true;
diff --git a/Source/DasherVR/Private/SDasherWidget.cpp b/Source/DasherVR/Private/SDasherWidget.cpp
index dc69aa944c744f8b58e626cd678c7eb8fbc0e293..3f715fe8c70df4aa2e1f3fcdd9a1e664509c3673 100644
--- a/Source/DasherVR/Private/SDasherWidget.cpp
+++ b/Source/DasherVR/Private/SDasherWidget.cpp
@@ -30,7 +30,6 @@ void SDasherWidget::UnpauseInput()
     InputPaused = false;
 }
 
-
 //Event Handlers
 //Mouse position saved for mouse Input
 FReply SDasherWidget::HandleMouseMoveEvent(const FGeometry& Geometry, const FPointerEvent& MouseEvent)
@@ -183,13 +182,6 @@ void SDasherWidget::SetParameter(FString ParameterName, FString Value) {
         }
 }
 
-
-
-//Set the colour Scheme for dasher
-void SDasherWidget::SetColourScheme(const Dasher::CColourIO::ColourInfo* pcolours) {
-  ColorPalette = pcolours;
-}
-
 //paints our stuff, then lets compoundwidget (super::) draw its stuff
 //This draws from bottom to top rectangles->lines->labels, this is enough for our use, but for more complex scenarios a proper layering system might have to be implemented
 int32 SDasherWidget::OnPaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyClippingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const
@@ -212,7 +204,7 @@ int32 SDasherWidget::OnPaint(const FPaintArgs& Args, const FGeometry& AllottedGe
         RectObject = static_cast<FFilledRect*>(GeneralObject.Get());
         Size = { FMath::Abs(RectObject->top.X - RectObject->bottom.X), FMath::Abs(RectObject->top.Y - RectObject->bottom.Y) };
         FSlateDrawElement::MakeBox(OutDrawElements, LayerId++, AllottedGeometry.ToPaintGeometry(Size, FSlateLayoutTransform(1, RectObject->top)), &MyBrush, ESlateDrawEffect::None, RectObject->color); //actually adds the box to the geometry
-        break;
+    	break;
       case Writing:
         WritingObject = static_cast<FWriting*>(GeneralObject.Get());
         Text = FString(UTF8_TO_TCHAR(WritingObject->label->m_strText.c_str()));
@@ -280,85 +272,51 @@ void SDasherWidget::Display() {
 }
 
 //Functions for Drawing
-void SDasherWidget::DrawRectangle(Dasher::screenint x1, Dasher::screenint y1, Dasher::screenint x2, Dasher::screenint y2, int colour, int iOutlineColour, int iThickness)
+void SDasherWidget::DrawRectangle(Dasher::screenint x1, Dasher::screenint y1, Dasher::screenint x2, Dasher::screenint y2, const Dasher::ColorPalette::Color& color, const Dasher::ColorPalette::Color& outlineColor, int iThickness)
 {
-   FLinearColor RectColorFG = FLinearColor(0, 0, 0);
-   FLinearColor RectColorBG = FLinearColor(0, 0, 0);
-
-   FVector2D TopBG = FVector2D(x1, y1);
-   FVector2D BottomBG = FVector2D(x2, y2);
-   FVector2D TopFG(x1, y1);
-   FVector2D BottomFG(x2, y2);
-
-   if (iThickness && !(colour == 99 || colour == 96))
-   {
-       const int BGColour = iOutlineColour == -1 ? 3 : iOutlineColour;
-       TopFG = FVector2D(x1+iThickness, y1+iThickness);
-       BottomFG = FVector2D(x2-iThickness, y2-iThickness);
-
-       RectColorBG = FLinearColor(ColorPalette->Colors[BGColour].Red / 255.0, ColorPalette->Colors[BGColour].Green / 255.0, ColorPalette->Colors[BGColour].Blue / 255.0);
-       BackBuffer->Add(MakeUnique<FFilledRect>(TopBG, BottomBG, RectColorBG));
-   }
-
- 
-    if (colour == 99 || colour == 96)
-    {
-        RectColorFG = FLinearColor(ColorPalette->Colors[colour].Red / 255.0, ColorPalette->Colors[colour].Green / 255.0, ColorPalette->Colors[colour].Blue / 255.0, 0.5);
-    }
-    else
-    {
-        RectColorFG = FLinearColor(ColorPalette->Colors[colour].Red / 255.0, ColorPalette->Colors[colour].Green / 255.0, ColorPalette->Colors[colour].Blue / 255.0);
-    }
-
-    BackBuffer->Add(MakeUnique<FFilledRect>(TopFG, BottomFG, RectColorFG));
+	FVector2D TopBG = FVector2D(x1, y1);
+	FVector2D BottomBG = FVector2D(x2, y2);
+	FVector2D TopFG(x1, y1);
+	FVector2D BottomFG(x2, y2);
+
+	if (iThickness)
+	{
+		TopFG = FVector2D(x1+iThickness, y1+iThickness);
+		BottomFG = FVector2D(x2-iThickness, y2-iThickness);
+
+		TArray<FVector2D> PointArray = {
+		{TopBG.X, TopBG.Y},
+		{TopBG.X, BottomBG.Y},
+		{BottomBG.X, BottomBG.Y},
+		{BottomBG.X, TopBG.Y},
+		{TopBG.X, TopBG.Y}
+		};
+
+		BackBuffer->Add(MakeUnique<FPolyLine>(PointArray, static_cast<float>(iThickness), FLinearColor(color.Red / 255.0, color.Green / 255.0, color.Blue / 255.0, color.Alpha / 255.0f)));
+	}
+
+	if(color != Dasher::ColorPalette::noColor)
+	{
+		BackBuffer->Add(MakeUnique<FFilledRect>(TopFG, BottomFG, FLinearColor(color.Red / 255.0f, color.Green / 255.0f, color.Blue / 255.0f, color.Alpha / 255.0f)));
+	}
 }
 
-void SDasherWidget::DrawString(CDasherScreen::Label* lab, screenint x1, screenint y1, unsigned int iSize, int colour) {
-  const FVector2D Pos(x1, y1);
-
-  FLinearColor TextColor;
-
-  if (ColorPalette) {
-    TextColor = FLinearColor(ColorPalette->Colors[colour].Red / 255.0, ColorPalette->Colors[colour].Green / 255.0, ColorPalette->Colors[colour].Blue / 255.0);
-  }
-  else {
-    TextColor = FLinearColor::Black;
-  }
-  
-  BackBuffer->Add(MakeUnique<FWriting>(lab, Pos, static_cast<int>(iSize), TextColor));
+void SDasherWidget::DrawString(CDasherScreen::Label* lab, screenint x1, screenint y1, unsigned int iSize, const Dasher::ColorPalette::Color& color) {
+    BackBuffer->Add(MakeUnique<FWriting>(lab, FVector2D(x1, y1), static_cast<int>(iSize), FLinearColor(color.Red / 255.0, color.Green / 255.0, color.Blue / 255.0, color.Alpha / 255.0f)));
 }
 
-void SDasherWidget::Polyline(CDasherScreen::point* points, int number, int iwidth, int colour) {
-  
-  FLinearColor LinearColor;
-
-  if (ColorPalette) {
-    LinearColor = FLinearColor(ColorPalette->Colors[colour].Red / 255.0, ColorPalette->Colors[colour].Green / 255.0, ColorPalette->Colors[colour].Blue / 255.0);
-  }
-  else {
-    LinearColor = FLinearColor::Blue;
-  }
-
+void SDasherWidget::Polyline(CDasherScreen::point* points, int number, int iwidth, const Dasher::ColorPalette::Color& color) {
   TArray<FVector2D> PointArray;
   for (int i = 0; i < number; i++) {
     FVector2D Point(points[i].x, points[i].y);
     PointArray.Add(Point);
   }
   
-  BackBuffer->Add(MakeUnique<FPolyLine>(PointArray, static_cast<float>(iwidth), LinearColor));
+  BackBuffer->Add(MakeUnique<FPolyLine>(PointArray, static_cast<float>(iwidth), FLinearColor(color.Red / 255.0, color.Green / 255.0, color.Blue / 255.0, color.Alpha / 255.0f)));
 }
 
 //techincally polygons are just multiple polylines. Dasher doesn't actually draw polygons in our case.
-void SDasherWidget::Polygon(CDasherScreen::point* points, int number, int fillcolour, int outlinecolour, int iwidth) {
-  FLinearColor LinearColor;
-
-  if (ColorPalette) {
-    LinearColor = FLinearColor(ColorPalette->Colors[outlinecolour].Red / 255.0, ColorPalette->Colors[outlinecolour].Green / 255.0, ColorPalette->Colors[outlinecolour].Blue / 255.0);
-  }
-  else {
-    LinearColor = FLinearColor::Blue;
-  }
-
+void SDasherWidget::Polygon(CDasherScreen::point* points, int number, const Dasher::ColorPalette::Color& fillcolor, const Dasher::ColorPalette::Color& outlinecolor, int iwidth) {
   TArray<FVector2D> PointArray;
   for (int i = 0; i < number; i++) {
     FVector2D Point(points[i].x, points[i].y);
@@ -366,7 +324,7 @@ void SDasherWidget::Polygon(CDasherScreen::point* points, int number, int fillco
   }
   PointArray.Add(FVector2D(points[0].x, points[0].y));
 
-  BackBuffer->Add(MakeUnique<FPolyLine>(PointArray, static_cast<float>(iwidth), LinearColor));
+  BackBuffer->Add(MakeUnique<FPolyLine>(PointArray, static_cast<float>(iwidth), FLinearColor(outlinecolor.Red / 255.0, outlinecolor.Green / 255.0, outlinecolor.Blue / 255.0, outlinecolor.Alpha / 255.0)));
 }
 
 //We pass through the contents of the dasher buffer
diff --git a/Source/DasherVR/Public/Dasher3DWidget.h b/Source/DasherVR/Public/Dasher3DWidget.h
index 2444822a4f33ce3c9476a95560f87b864e4d2de4..df3167aaed7aa77281e5979dd9ec413f2ac120ca 100644
--- a/Source/DasherVR/Public/Dasher3DWidget.h
+++ b/Source/DasherVR/Public/Dasher3DWidget.h
@@ -41,15 +41,14 @@ public:
 	virtual void Tick(float DeltaTime) override;
 
 	virtual std::pair<Dasher::screenint, Dasher::screenint> TextSize(Label* label, unsigned iFontSize) override;
-	virtual void DrawString(Label* label, Dasher::screenint x, Dasher::screenint y, unsigned iFontSize, int iColour) override;
-	virtual void DrawRectangle(Dasher::screenint x1, Dasher::screenint y1, Dasher::screenint x2, Dasher::screenint y2, int Colour, int iOutlineColour, int iThickness) override;
-	virtual void DrawCube(Dasher::screenint posX, Dasher::screenint posY, Dasher::screenint sizeX, Dasher::screenint sizeY, Dasher::myint extrusionLevel, Dasher::myint groupRecursionDepth, Dasher::myint levelUnderCrosshair, int Colour, int iOutlineColour, int iThickness) override;
-	virtual void Draw3DLabel(Label* label, Dasher::screenint x, Dasher::screenint y, Dasher::myint extrusionLevel, Dasher::myint groupRecursionDepth, Dasher::myint levelUnderCrosshair, unsigned int iFontSize, int iColour) override;
-	virtual void DrawCircle(Dasher::screenint iCX, Dasher::screenint iCY, Dasher::screenint iR, int iFillColour, int iLineColour, int iLineWidth) override;
-	virtual void Polyline(point* Points, int Number, int iWidth, int Colour) override;
-	virtual void Polygon(point* Points, int Number, int fillColour, int outlineColour, int lineWidth) override;
+	virtual void DrawString(Label* label, Dasher::screenint x, Dasher::screenint y, unsigned iFontSize, const Dasher::ColorPalette::Color& color) override;
+	virtual void DrawRectangle(Dasher::screenint x1, Dasher::screenint y1, Dasher::screenint x2, Dasher::screenint y2, const Dasher::ColorPalette::Color& color, const Dasher::ColorPalette::Color& outlineColor, int iThickness) override;
+	virtual void DrawCube(Dasher::screenint posX, Dasher::screenint posY, Dasher::screenint sizeX, Dasher::screenint sizeY, Dasher::myint extrusionLevel, Dasher::myint groupRecursionDepth, Dasher::myint levelUnderCrosshair, const Dasher::ColorPalette::Color& color, const Dasher::ColorPalette::Color& outlineColor, int iThickness) override;
+	virtual void Draw3DLabel(Label* label, Dasher::screenint x, Dasher::screenint y, Dasher::myint extrusionLevel, Dasher::myint groupRecursionDepth, Dasher::myint levelUnderCrosshair, unsigned int iFontSize, const Dasher::ColorPalette::Color& color) override;
+	virtual void DrawCircle(Dasher::screenint iCX, Dasher::screenint iCY, Dasher::screenint iR, const Dasher::ColorPalette::Color& fillColor, const Dasher::ColorPalette::Color& lineColor, int iLineWidth) override;
+	virtual void Polyline(point* Points, int Number, int iWidth, const Dasher::ColorPalette::Color& color) override;
+	virtual void Polygon(point* Points, int Number, const Dasher::ColorPalette::Color& fillColor, const Dasher::ColorPalette::Color& outlineColor, int lineWidth) override;
 	virtual void Display() override;
-	virtual void SetColourScheme(const Dasher::CColourIO::ColourInfo* pColourScheme) override;
 	virtual bool IsPointVisible(Dasher::screenint x, Dasher::screenint y) override;
 	virtual bool GetScreenCoords(Dasher::screenint& iX, Dasher::screenint& iY, Dasher::CDasherView* pView) override;
 	virtual bool MultiSizeFonts() override { return true; }
@@ -69,8 +68,6 @@ public:
 	virtual void PostInitializeComponents() override;
 
 private:
-	// stores color information 
-	const Dasher::CColourIO::ColourInfo* ColorPalette = nullptr;
 	FVector2D CursorPosition;
 	float WorldToMeters; // normally 100
 	FVector2D DrawingSize = {1000,1000}; // Rendering Resolution
diff --git a/Source/DasherVR/Public/SDasherWidget.h b/Source/DasherVR/Public/SDasherWidget.h
index 74eac990ba6ce8de6bd73557d60c4b3990ea9ee7..b3fa7adc03b039b667fc8125628a4c0e076f222a 100644
--- a/Source/DasherVR/Public/SDasherWidget.h
+++ b/Source/DasherVR/Public/SDasherWidget.h
@@ -86,19 +86,17 @@ public:
 
 	//set of functions inherited from Dasherscreen used for displaying, see DasherScreen for further info
 
-	virtual void SetColourScheme(const Dasher::CColourIO::ColourInfo* pcolours) override;
-
     virtual std::pair<screenint, screenint> TextSize(CDasherScreen::Label* Label, unsigned int Size) override;
 
-	virtual void DrawString(CDasherScreen::Label *label, screenint x1, screenint y1, unsigned int size, int colour) override;
+	virtual void DrawString(CDasherScreen::Label *label, screenint x1, screenint y1, unsigned int size, const Dasher::ColorPalette::Color& color) override;
 
-	virtual void DrawRectangle(Dasher::screenint x1, Dasher::screenint y1, Dasher::screenint x2, Dasher::screenint y2, int colour, int ioutlinecolour, int ithickness) override;
+	virtual void DrawRectangle(Dasher::screenint x1, Dasher::screenint y1, Dasher::screenint x2, Dasher::screenint y2, const Dasher::ColorPalette::Color& color, const Dasher::ColorPalette::Color& outlinecolor, int ithickness) override;
 
-	virtual void DrawCircle(screenint icx, screenint icy, screenint ir, int ifillcolour, int ilinecolour, int ithickness) override {} //we don't really need to draw circles, so it's not implemented
+	virtual void DrawCircle(screenint icx, screenint icy, screenint ir, const Dasher::ColorPalette::Color& ifillcolor, const Dasher::ColorPalette::Color& ilinecolor, int ithickness) override {} //we don't really need to draw circles, so it's not implemented
 
-	virtual void Polyline(CDasherScreen::point* points, int number, int iwidth, int colour) override;
+	virtual void Polyline(CDasherScreen::point* points, int number, int iwidth, const Dasher::ColorPalette::Color& color) override;
 
-	virtual void Polygon(CDasherScreen::point* points, int number, int fillcolour, int outlinecolour, int iwidth) override;
+	virtual void Polygon(CDasherScreen::point* points, int number, const Dasher::ColorPalette::Color& fillcolor, const Dasher::ColorPalette::Color& outlinecolor, int iwidth) override;
 
 	virtual void Display() override;
 
@@ -137,7 +135,7 @@ public:
 	//Allows to Pause Input
 	void PauseInput();
 	void UnpauseInput();
-	
+
 	FDasherMouseUpDelegate MouseUpListeners;
 	FDasherMouseUpDelegate MouseDownListeners;
 	FBufferManiputlationDelegate CharacterEntered;
@@ -171,7 +169,6 @@ private:
 
 protected:
 	// stores color information 
-	const Dasher::CColourIO::ColourInfo* ColorPalette = nullptr;
 	TSharedPtr<Dasher::DasherInterface> DasherMainInterface;
 };
 
diff --git a/Source/Thirdparty/Dasher/DasherCore b/Source/Thirdparty/Dasher/DasherCore
index 6cc641100217e9e31cc949974724d2346eba7b15..a061849126815c95bda625aee511b63030904236 160000
--- a/Source/Thirdparty/Dasher/DasherCore
+++ b/Source/Thirdparty/Dasher/DasherCore
@@ -1 +1 @@
-Subproject commit 6cc641100217e9e31cc949974724d2346eba7b15
+Subproject commit a061849126815c95bda625aee511b63030904236
diff --git a/Source/Thirdparty/Dasher/Lib/DasherCore.lib b/Source/Thirdparty/Dasher/Lib/DasherCore.lib
index bd77a09553dd7926cd1a86989b9fd86f46d6e63e..0541fb69966d448865c63120098149237f45ba4a 100644
--- a/Source/Thirdparty/Dasher/Lib/DasherCore.lib
+++ b/Source/Thirdparty/Dasher/Lib/DasherCore.lib
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:91a02180462eac8d5b805d8ab56e6372f0952713e541722e1266ccdd01800930
-size 20021478
+oid sha256:461b5d6f6fec5470088444f0467fd5a7ed51f135bef940b1fc1142d950a950dd
+size 19978948
diff --git a/Source/Thirdparty/Dasher/Lib/DasherCore.pdb b/Source/Thirdparty/Dasher/Lib/DasherCore.pdb
index bd97442b08d1e1a2f37728fea5e52f9480e3ad91..130b41dcca7bc1dfc61498ffa647656a8c135793 100644
Binary files a/Source/Thirdparty/Dasher/Lib/DasherCore.pdb and b/Source/Thirdparty/Dasher/Lib/DasherCore.pdb differ