diff --git a/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java b/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java
index 14afaf8..46933f3 100644
--- a/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java
+++ b/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java
@@ -187,16 +187,16 @@
 
 
             b = BitmapFactory.decodeResource(mRes, R.raw.browser, opts);
-            mIcons[0] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true);
+            mIcons[0] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGBA_8888, true);
 
             b = BitmapFactory.decodeResource(mRes, R.raw.market, opts);
-            mIcons[1] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true);
+            mIcons[1] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGBA_8888, true);
 
             b = BitmapFactory.decodeResource(mRes, R.raw.photos, opts);
-            mIcons[2] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true);
+            mIcons[2] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGBA_8888, true);
 
             b = BitmapFactory.decodeResource(mRes, R.raw.settings, opts);
-            mIcons[3] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true);
+            mIcons[3] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGBA_8888, true);
 
 /*
             b = BitmapFactory.decodeResource(mRes, R.raw.assasins_creed, opts);
@@ -342,8 +342,8 @@
     }
 
     private void makeTextBitmap() {
-        //Bitmap.createBitmap(width, height, Bitmap.Config);
-        //new Canvas(theBitmap);
+        //Bitmap b = Bitmap.createBitmap(128, 64, Bitmap.Config);
+        //Canvas c = new Canvas(b);
         //canvas.drawText();
     }
 
diff --git a/libs/rs/java/Rollo/src/com/android/rollo/RolloView.java b/libs/rs/java/Rollo/src/com/android/rollo/RolloView.java
index 27f1584..c67644b 100644
--- a/libs/rs/java/Rollo/src/com/android/rollo/RolloView.java
+++ b/libs/rs/java/Rollo/src/com/android/rollo/RolloView.java
@@ -101,11 +101,11 @@
 
     void computeSelection(float x, float y)
     {
-        float col = mColumn + (x - 0.5f) * 4 + 1;
+        float col = mColumn + (x - 0.5f) * 4 + 1.25f;
         int iCol = (int)(col + 0.25f);
 
         float row = (y / 0.8f) * mRows;
-        int iRow = (int)(row - 0.25f);
+        int iRow = (int)(row - 0.5f);
 
         mRender.setSelected(iCol * mRows + iRow);
     }
