diff --git a/project/Build.xml b/project/Build.xml
index 333415ecd..a5d5df1bc 100644
--- a/project/Build.xml
+++ b/project/Build.xml
@@ -281,6 +281,7 @@
+
@@ -356,6 +357,7 @@
+
diff --git a/project/include/renderer/common/Surface.h b/project/include/renderer/common/Surface.h
index 00dd9e23b..9627ef213 100644
--- a/project/include/renderer/common/Surface.h
+++ b/project/include/renderer/common/Surface.h
@@ -28,7 +28,11 @@ namespace lime {
public:
+ #ifdef LIME_PREMULTIPLIED_ALPHA
+ Surface () : mTexture (0), mVersion (0), mFlags (SURF_FLAGS_NOT_REPEAT_IF_NON_PO2 | SURF_FLAGS_USE_PREMULTIPLIED_ALPHA), mAllowTrans (true) {}; // Non-PO2 will generate dodgy repeating anyhow...
+ #else
Surface () : mTexture (0), mVersion (0), mFlags (SURF_FLAGS_NOT_REPEAT_IF_NON_PO2), mAllowTrans (true) {}; // Non-PO2 will generate dodgy repeating anyhow...
+ #endif
virtual RenderTarget BeginRender (const Rect &inRect, bool inForHitTest = false) = 0;
virtual void BlitChannel (const RenderTarget &outTarget, const Rect &inSrcRect, int inPosX, int inPosY, int inSrcChannel, int inDestChannel) const = 0;
diff --git a/project/src/renderer/opengl/OpenGLContext.cpp b/project/src/renderer/opengl/OpenGLContext.cpp
index 9e60e2012..908bab749 100644
--- a/project/src/renderer/opengl/OpenGLContext.cpp
+++ b/project/src/renderer/opengl/OpenGLContext.cpp
@@ -404,7 +404,11 @@ namespace lime {
}
int progId = 0;
+ #ifdef LIME_PREMULTIPLIED_ALPHA
+ bool premAlpha = true;
+ #else
bool premAlpha = false;
+ #endif
if ((element.mFlags & DRAW_HAS_TEX) && element.mSurface) {
diff --git a/project/src/renderer/opengl/OpenGLProgram.cpp b/project/src/renderer/opengl/OpenGLProgram.cpp
index 137828482..35d6cdf98 100644
--- a/project/src/renderer/opengl/OpenGLProgram.cpp
+++ b/project/src/renderer/opengl/OpenGLProgram.cpp
@@ -231,7 +231,11 @@ namespace lime {
if (mColourScaleSlot >= 0) {
+ #ifdef LIME_PREMULTIPLIED_ALPHA
+ glUniform4f (mColourScaleSlot, inTransform->redMultiplier * inTransform->alphaMultiplier * rf, inTransform->greenMultiplier * inTransform->alphaMultiplier * gf, inTransform->blueMultiplier * inTransform->alphaMultiplier * bf, inTransform->alphaMultiplier * af);
+ #else
glUniform4f (mColourScaleSlot, inTransform->redMultiplier * rf, inTransform->greenMultiplier * gf, inTransform->blueMultiplier * bf, inTransform->alphaMultiplier * af);
+ #endif
}