diff --git a/libs/surfaceflinger/BootAnimation.cpp b/libs/surfaceflinger/BootAnimation.cpp
index 03edbf3..db40385 100644
--- a/libs/surfaceflinger/BootAnimation.cpp
+++ b/libs/surfaceflinger/BootAnimation.cpp
@@ -164,9 +164,7 @@
 
     // initialize GL
     glShadeModel(GL_FLAT);
-    glEnable(GL_DITHER);
     glEnable(GL_TEXTURE_2D);
-    glEnable(GL_SCISSOR_TEST);
     glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
 
     return NO_ERROR;
@@ -196,8 +194,6 @@
     glClear(GL_COLOR_BUFFER_BIT);
     eglSwapBuffers(mDisplay, mSurface);
 
-    // wait ~1s
-
     const GLint xc = (mWidth  - mAndroid[0].w) / 2;
     const GLint yc = (mHeight - mAndroid[0].h) / 2;
     const Rect updateRect(xc, yc, xc + mAndroid[0].w, yc + mAndroid[0].h);
@@ -216,7 +212,8 @@
 
     const nsecs_t startTime = systemTime();
     do {
-        double time = systemTime() - startTime;
+        nsecs_t now = systemTime();
+        double time = now - startTime;
         float t = 4.0f * float(time / us2ns(16667)) / mAndroid[1].w;
         GLint offset = (1 - (t - floorf(t))) * mAndroid[1].w;
         GLint x = xc - offset;
@@ -231,6 +228,11 @@
         glDrawTexiOES(xc, yc, 0, mAndroid[0].w, mAndroid[0].h);
 
         eglSwapBuffers(mDisplay, mSurface);
+        
+        // 12fps: don't animate too fast to preserve CPU
+        const nsecs_t sleepTime = 83333 - ns2us(systemTime() - now);
+        if (sleepTime > 0)
+            usleep(sleepTime); 
     } while (!exitPending());
 
     glDeleteTextures(1, &mAndroid[0].name);
