diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/modelviewer.rs b/libs/rs/java/ModelViewer/src/com/android/modelviewer/modelviewer.rs
index 41594eb..adb609c 100644
--- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/modelviewer.rs
+++ b/libs/rs/java/ModelViewer/src/com/android/modelviewer/modelviewer.rs
@@ -62,7 +62,7 @@
 
     rsgDrawMesh(gTestMesh);
 
-    color(0.3f, 0.3f, 0.3f, 1.0f);
+    rsgFontColor(0.3f, 0.3f, 0.3f, 1.0f);
     rsgDrawText("Renderscript model test", 30, 695);
 
     rsgBindFont(gItalic);
diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp
index 681f83e..dfdeb98 100644
--- a/libs/rs/rsContext.cpp
+++ b/libs/rs/rsContext.cpp
@@ -263,38 +263,18 @@
 {
     char buffer[128];
     sprintf(buffer, "Frame %i ms, Script %i ms", mTimeMSLastFrame, mTimeMSLastScript);
-    /*float oldR = mStateVertex.color[0];
-    float oldG = mStateVertex.color[1];
-    float oldB = mStateVertex.color[2];
-    float oldA = mStateVertex.color[3];*/
+    float oldR, oldG, oldB, oldA;
+    mStateFont.getFontColor(&oldR, &oldG, &oldB, &oldA);
 
     float shadowCol = 0.2f;
-    /*mStateVertex.color[0] = shadowCol;
-    mStateVertex.color[1] = shadowCol;
-    mStateVertex.color[2] = shadowCol;
-    mStateVertex.color[3] = 1.0f;
-    if (!checkVersion2_0()) {
-        glColor4f(shadowCol, shadowCol, shadowCol, 1.0f);
-    }*/
+    mStateFont.setFontColor(shadowCol, shadowCol, shadowCol, 1.0f);
     mStateFont.renderText(buffer, 5, getHeight() - 5);
 
-    /*float textCol = 0.9f;
-    mStateVertex.color[0] = textCol;
-    mStateVertex.color[1] = textCol;
-    mStateVertex.color[2] = textCol;
-    mStateVertex.color[3] = 1.0f;
-    if (!checkVersion2_0()) {
-        glColor4f(textCol, textCol, textCol, 1.0f);
-    }*/
+    float textCol = 0.9f;
+    mStateFont.setFontColor(textCol, textCol, textCol, 1.0f);
     mStateFont.renderText(buffer, 4, getHeight() - 6);
 
-    /*mStateVertex.color[0] = oldR;
-    mStateVertex.color[1] = oldG;
-    mStateVertex.color[2] = oldB;
-    mStateVertex.color[3] = oldA;
-    if (!checkVersion2_0()) {
-        glColor4f(oldR, oldG, oldB, oldA);
-    }*/
+    mStateFont.setFontColor(oldR, oldG, oldB, oldA);
 }
 
 void * Context::threadProc(void *vrsc)
diff --git a/libs/rs/rsFont.cpp b/libs/rs/rsFont.cpp
index a741adc..833bee0 100644
--- a/libs/rs/rsFont.cpp
+++ b/libs/rs/rsFont.cpp
@@ -259,7 +259,7 @@
     mCurrentQuadIndex = 0;
     mRSC = NULL;
     mLibrary = NULL;
-    setFontColor(0.0f, 0.0f, 0.0f, 1.0f);
+    setFontColor(0.1f, 0.1f, 0.1f, 1.0f);
 }
 
 FontState::~FontState()
@@ -521,6 +521,11 @@
     ObjectBaseRef<const ProgramStore> tmpPS(mRSC->getFragmentStore());
     mRSC->setFragmentStore(mFontProgramStore.get());
 
+    if(mFontColorDirty) {
+        mFontShaderF->setConstantColor(mFontColor[0], mFontColor[1], mFontColor[2], mFontColor[3]);
+        mFontColorDirty = false;
+    }
+
     if (!mRSC->setupCheck()) {
         mRSC->setVertex((ProgramVertex *)tmpV.get());
         mRSC->setRaster((ProgramRaster *)tmpR.get());
@@ -669,6 +674,13 @@
     mFontColorDirty = true;
 }
 
+void FontState::getFontColor(float *r, float *g, float *b, float *a) const {
+    *r = mFontColor[0];
+    *g = mFontColor[1];
+    *b = mFontColor[2];
+    *a = mFontColor[3];
+}
+
 void FontState::deinit(Context *rsc)
 {
     mInitialized = false;
diff --git a/libs/rs/rsFont.h b/libs/rs/rsFont.h
index 2d9a34a..ab229be 100644
--- a/libs/rs/rsFont.h
+++ b/libs/rs/rsFont.h
@@ -117,6 +117,7 @@
     void renderText(Allocation *alloc, uint32_t start, int len, int x, int y);
 
     void setFontColor(float r, float g, float b, float a);
+    void getFontColor(float *r, float *g, float *b, float *a) const;
 
 protected:
 
