diff --git a/Android.mk b/Android.mk
index f0b1fa7..9234fe4 100644
--- a/Android.mk
+++ b/Android.mk
@@ -117,7 +117,7 @@
 	libnativehelper \
 	libutils \
 	liblog \
-	libskia \
+	libjnigraphics \
 	libcutils
 
 LOCAL_MODULE:= libFFTEm
diff --git a/FaceDetector_jni.cpp b/FaceDetector_jni.cpp
index 7b44c75..6f59749 100644
--- a/FaceDetector_jni.cpp
+++ b/FaceDetector_jni.cpp
@@ -24,7 +24,7 @@
 #include <utils/String8.h>
 #include <utils/Log.h>
 
-#include <SkBitmap.h>
+#include <android/bitmap.h>
 
 #include "jni.h"
 #include "JNIHelp.h"
@@ -66,8 +66,6 @@
     jfieldID    bwbuffer;
 } gFaceDetectorOffsets;
 
-jfieldID nativeBitmapID;
-
 // ---------------------------------------------------------------------------
 
 static void getFaceData(btk_HDCR hdcr, FaceData* fdata)
@@ -111,9 +109,6 @@
     gFaceOffsets.eulerx      = _env->GetFieldID(faceClass, "mPoseEulerX", "F");
     gFaceOffsets.eulery      = _env->GetFieldID(faceClass, "mPoseEulerY", "F");
     gFaceOffsets.eulerz      = _env->GetFieldID(faceClass, "mPoseEulerZ", "F");
-
-    jclass bitmapClass = _env->FindClass("android/graphics/Bitmap");
-    nativeBitmapID = _env->GetFieldID(bitmapClass, "mNativeBitmap", "J");
 }
 
 // ---------------------------------------------------------------------------
@@ -209,21 +204,18 @@
     jbyteArray bwbufferObject = (jbyteArray)
             _env->GetObjectField(_this, gFaceDetectorOffsets.bwbuffer);
 
-    // get to the native bitmap
-    SkBitmap const * nativeBitmap =
-            (SkBitmap const *)_env->GetLongField(bitmap, nativeBitmapID);
-
     // get to our BW temporary buffer
     jbyte* bwbuffer = _env->GetByteArrayElements(bwbufferObject, 0);
 
     // convert the image to B/W
     uint8_t* dst = (uint8_t*)bwbuffer;
 
-    // manage the life-time of locking our pixels
-    SkAutoLockPixels alp(*nativeBitmap);
+    uint16_t const* src;
+    AndroidBitmapInfo bitmapInfo;
+    AndroidBitmap_getInfo(_env, bitmap, &bitmapInfo);
+    AndroidBitmap_lockPixels(_env, bitmap, (void**) &src);
 
-    uint16_t const* src = (uint16_t const*)nativeBitmap->getPixels();
-    int wpr = nativeBitmap->rowBytes() / 2;
+    int wpr = bitmapInfo.stride / 2;
     for (u32 y=0 ; y<height; y++) {
         for (u32 x=0 ; x<width ; x++) {
             uint16_t rgb = src[x];
@@ -248,6 +240,7 @@
     }
 
     // release the arrays we're using
+    AndroidBitmap_unlockPixels(_env, bitmap);
     _env->ReleaseByteArrayElements(bwbufferObject, bwbuffer, 0);
     return numberOfFaces;
 }
