diff --git a/libs/rs/Android.mk b/libs/rs/Android.mk
index 6f72802..6ff39a4 100644
--- a/libs/rs/Android.mk
+++ b/libs/rs/Android.mk
@@ -117,6 +117,7 @@
 	libnativehelper \
 	libRS \
 	libcutils \
+    libsgl \
 	libutils \
 	libui
 
diff --git a/libs/rs/RenderScript.h b/libs/rs/RenderScript.h
index 378fccc..2b33419 100644
--- a/libs/rs/RenderScript.h
+++ b/libs/rs/RenderScript.h
@@ -86,14 +86,14 @@
     RS_ELEMENT_USER_I32,
     RS_ELEMENT_USER_FLOAT, 
 
-    RS_ELEMENT_A_8, 
-    RS_ELEMENT_RGB_565, 
-    RS_ELEMENT_RGBA_5551, 
-    RS_ELEMENT_RGBA_4444, 
-    RS_ELEMENT_RGB_888, 
-    RS_ELEMENT_RGBA_8888, 
+    RS_ELEMENT_A_8,          // 7
+    RS_ELEMENT_RGB_565,      // 8
+    RS_ELEMENT_RGBA_5551,    // 9
+    RS_ELEMENT_RGBA_4444,    // 10
+    RS_ELEMENT_RGB_888,      // 11
+    RS_ELEMENT_RGBA_8888,    // 12
 
-    RS_ELEMENT_INDEX_16, 
+    RS_ELEMENT_INDEX_16, //13
     RS_ELEMENT_INDEX_32, 
     RS_ELEMENT_XY_F32, 
     RS_ELEMENT_XYZ_F32, 
diff --git a/libs/rs/java/Fountain/res/raw/fountain.c b/libs/rs/java/Fountain/res/raw/fountain.c
index 76f8dcf..cee6e22 100644
--- a/libs/rs/java/Fountain/res/raw/fountain.c
+++ b/libs/rs/java/Fountain/res/raw/fountain.c
@@ -15,7 +15,7 @@
     count = loadI32(con, 0, 1);
     touch = loadI32(con, 0, 2);
     x = loadI32(con, 0, 3);
-    y = 480 - loadI32(con, 0, 4);
+    y = loadI32(con, 0, 4);
 
     rate = 4;
     maxLife = (count / rate) - 1;
@@ -69,7 +69,7 @@
         posy = * (int* )(partPtr + 16); //loadEnvI32(con, 2, srcIdx + 4);
 
         if (life) {
-            if (posy > 0) {
+            if (posy < (480 << 16)) {
                 c = 0xffafcf | ((life >> lifeShift) << 24);
 
                 * (int* )(vertPtr) = c; //storeEnvU32(con, 1, dstIdx, c);
@@ -87,14 +87,14 @@
                 vertPtr = vertPtr + 36;
                 drawCount ++;
             } else {
-                if (dy < 0) {
+                if (dy > 0) {
                     dy = (-dy) >> 1;
                 }
             }
 
             posx = posx + dx;
             posy = posy + dy;
-            dy = dy - 0x400;
+            dy = dy + 0x400;
             life --;
 
             * (int* )(partPtr + 0) = dx; //storeEnvI32(con, 2, srcIdx, dx);
diff --git a/libs/rs/java/Fountain/src/com/android/fountain/RenderScript.java b/libs/rs/java/Fountain/src/com/android/fountain/RenderScript.java
index cf16cec..796fe35 100644
--- a/libs/rs/java/Fountain/src/com/android/fountain/RenderScript.java
+++ b/libs/rs/java/Fountain/src/com/android/fountain/RenderScript.java
@@ -83,9 +83,8 @@
     native private int  nAllocationCreateTyped(int type);
     native private int  nAllocationCreatePredefSized(int predef, int count);
     native private int  nAllocationCreateSized(int elem, int count);
-    native private int  nAllocationCreateFromBitmap(int w, int h, int dstFmt, int srcFmt, boolean genMips, int[] data);
+    native private int  nAllocationCreateFromBitmap(int dstFmt, boolean genMips, Bitmap bmp);
 
-    //native private int  nAllocationCreateFromBitmap(type.mID);
     native private void nAllocationUploadToTexture(int alloc, int baseMioLevel);
     native private void nAllocationDestroy(int alloc);
     native private void nAllocationData(int id, int[] d);
@@ -190,21 +189,19 @@
         USER_I32 (5),
         USER_FLOAT (6),
 
-        A_8 (7),
-        RGB_565 (8),
-        RGBA_5551 (9),
-        RGBA_4444 (10),
-        RGB_888 (11),
-        RGBA_8888 (12),
+        A_8                (7),
+        RGB_565            (8),
+        RGB_888            (12),
+        RGBA_5551          (9),
+        RGBA_4444          (10),
+        RGBA_8888          (13),
 
-        INDEX_16 (13),
-        INDEX_32 (14),
-        XY_F32 (15),
-        XYZ_F32 (16),
-        ST_XY_F32 (17),
-        ST_XYZ_F32 (18),
-        NORM_XYZ_F32 (19),
-        NORM_ST_XYZ_F32 (20);
+        INDEX_16           (16),
+        INDEX_32           (17),
+        XY_F32             (18),
+        XYZ_F32            (19),
+        ST_XY_F32          (20),
+        ST_XYZ_F32         (21);
 
         int mID;
         ElementPredefined(int id) {
@@ -475,41 +472,7 @@
     }
 
     public Allocation allocationCreateFromBitmap(Bitmap b, ElementPredefined dstFmt, boolean genMips) {
-        int w = b.getWidth();
-        int h = b.getHeight();
-        int[] data = new int[w * h];
-
-        int outPtr = 0;
-        for(int y=0; y < h; y++) {
-            for(int x=0; x < w; x++) {
-                data[outPtr] = b.getPixel(x, y);
-                outPtr++;
-            }
-        }
-
-        int srcFmt = 0;
-        /*
-        switch(b.getConfig()) {
-        case ALPHA_8:
-            srcFmt = ElementPredefined.A_8.mID;
-            break;
-        case ARGB_4444:
-            srcFmt = ElementPredefined.RGBA_4444.mID;
-            break;
-        case ARGB_8888:
-            srcFmt = ElementPredefined.RGBA_8888.mID;
-            break;
-        case RGB_565:
-            srcFmt = ElementPredefined.RGB_565.mID;
-            break;
-        default:
-            Log.e(LOG_TAG, "allocationCreateFromBitmap, unknown bitmap format");
-        }
-        */
-
-        srcFmt = ElementPredefined.RGBA_8888.mID;
-
-        int id = nAllocationCreateFromBitmap(w, h, dstFmt.mID, srcFmt, genMips, data);
+        int id = nAllocationCreateFromBitmap(dstFmt.mID, genMips, b); 
         return new Allocation(id);
     }
 
diff --git a/libs/rs/jni/RenderScript_jni.cpp b/libs/rs/jni/RenderScript_jni.cpp
index 4af58a6..61866b7 100644
--- a/libs/rs/jni/RenderScript_jni.cpp
+++ b/libs/rs/jni/RenderScript_jni.cpp
@@ -26,6 +26,8 @@
 #include <ui/EGLNativeWindowSurface.h>
 #include <ui/Surface.h>
 
+#include <core/SkBitmap.h>
+
 #include "jni.h"
 #include "JNIHelp.h"
 #include "android_runtime/AndroidRuntime.h"
@@ -48,12 +50,15 @@
     env->ThrowNew(npeClazz, msg);
 }
 
-static jfieldID gContextId;
+static jfieldID gContextId = 0;
+static jfieldID gNativeBitmapID = 0;
 
 static void _nInit(JNIEnv *_env, jclass _this)
 {
-    LOGE("_nInit");
     gContextId             = _env->GetFieldID(_this, "mContext", "I");
+
+    jclass bitmapClass = _env->FindClass("android/graphics/Bitmap");
+    gNativeBitmapID = _env->GetFieldID(bitmapClass, "mNativeBitmap", "I");
 }
 
 
@@ -218,19 +223,48 @@
     rsAllocationUploadToTexture((RsAllocation)a, mip);
 }
 
-static int
-nAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, jint w, jint h, jint dstFmt, jint srcFmt, jboolean genMips, jintArray data)
+static RsElementPredefined SkBitmapToPredefined(SkBitmap::Config cfg)
 {
-    RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
-    jint len = _env->GetArrayLength(data);
-    LOG_API("nAllocationCreateFromBitmap, con(%p), w(%i), h(%i), dstFmt(%i), srcFmt(%i), mip(%i), len(%i)", con, w, h, dstFmt, srcFmt, genMips, len);
+    switch (cfg) {
+    case SkBitmap::kA8_Config:
+        return RS_ELEMENT_A_8;
+    case SkBitmap::kARGB_4444_Config:
+        return RS_ELEMENT_RGBA_4444;
+    case SkBitmap::kARGB_8888_Config:
+        return RS_ELEMENT_RGBA_8888;
+    case SkBitmap::kRGB_565_Config:
+        return RS_ELEMENT_RGB_565;
 
-    jint *ptr = _env->GetIntArrayElements(data, NULL);
-    jint id = (jint)rsAllocationCreateFromBitmap(w, h, (RsElementPredefined)dstFmt, (RsElementPredefined)srcFmt, genMips, ptr);
-    _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT);
-    return id;
+    default:
+        break;
+    }
+    // If we don't have a conversion mark it as a user type.
+    LOGE("Unsupported bitmap type");
+    return RS_ELEMENT_USER_U8;
 }
 
+static int
+nAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, jint dstFmt, jboolean genMips, jobject jbitmap)
+{
+    RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
+    SkBitmap const * nativeBitmap =
+            (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID);
+    const SkBitmap& bitmap(*nativeBitmap);
+    SkBitmap::Config config = bitmap.getConfig();
+
+    RsElementPredefined e = SkBitmapToPredefined(config);
+
+    if (e != RS_ELEMENT_USER_U8) {
+        bitmap.lockPixels();
+        const int w = bitmap.width();
+        const int h = bitmap.height();
+        const void* ptr = bitmap.getPixels();
+        jint id = (jint)rsAllocationCreateFromBitmap(w, h, (RsElementPredefined)dstFmt, e, genMips, ptr);
+        bitmap.unlockPixels();
+        return id;
+    }
+    return 0;
+}
 
 
 static void
@@ -795,7 +829,7 @@
 {"nAllocationCreateTyped",         "(I)I",                                 (void*)nAllocationCreateTyped },
 {"nAllocationCreatePredefSized",   "(II)I",                                (void*)nAllocationCreatePredefSized },
 {"nAllocationCreateSized",         "(II)I",                                (void*)nAllocationCreateSized },
-{"nAllocationCreateFromBitmap",    "(IIIIZ[I)I",                           (void*)nAllocationCreateFromBitmap },
+{"nAllocationCreateFromBitmap",    "(IZLandroid/graphics/Bitmap;)I",       (void*)nAllocationCreateFromBitmap },
 {"nAllocationUploadToTexture",     "(II)V",                                (void*)nAllocationUploadToTexture },
 {"nAllocationDestroy",             "(I)V",                                 (void*)nAllocationDestroy },
 {"nAllocationData",                "(I[I)V",                               (void*)nAllocationData_i },
diff --git a/libs/rs/rsUtils.h b/libs/rs/rsUtils.h
index 683c96e..f40e2ce 100644
--- a/libs/rs/rsUtils.h
+++ b/libs/rs/rsUtils.h
@@ -87,9 +87,9 @@
 static inline uint16_t rs888to565(uint32_t r, uint32_t g, uint32_t b)
 {
     uint16_t t = 0;
-    t |= r >> 3;
+    t |= b >> 3;
     t |= (g >> 2) << 5;
-    t |= (b >> 3) << 11;
+    t |= (r >> 3) << 11;
     return t;
 }
 
