diff --git a/res/raw/rollo3.c b/res/raw/rollo3.c
index 752fa86..bb02373 100644
--- a/res/raw/rollo3.c
+++ b/res/raw/rollo3.c
@@ -102,7 +102,7 @@
 
 void fling() {
     g_LastTouchDown = 0;
-    g_PosVelocity = -state->flingVelocityX * 2;
+    g_PosVelocity = -state->flingVelocity * 4;
     float av = fabsf(g_PosVelocity);
     float minVel = 3.5f;
 
@@ -329,7 +329,7 @@
     bindTexture(NAMED_PFTexLinear, 0, loadI32(ALLOC_ICON_IDS, iconNum));
     if (offset < -20) return;
     offset = clamp(offset, 0, 199 - 20);
-    drawSimpleMeshRange(NAMED_SMMesh2, offset * 6, 20 * 6);
+    drawSimpleMeshRange(NAMED_SMMesh, offset * 6, 20 * 6);
 }
 
 void drawTop(float rowOffset)
@@ -433,7 +433,7 @@
 
     //bindProgramFragment(NAMED_PFColor);
     //positionStrip(1, 0, 0);
-    //drawSimpleMesh(NAMED_SMMesh2);
+    //drawSimpleMesh(NAMED_SMMesh);
 
     bindProgramFragment(NAMED_PFTexLinear);
 
@@ -460,26 +460,6 @@
         return 1;
     }
 
-    if (0) {
-        float h = getHeight();
-
-        color(1, 1, 1, 1);
-        bindProgramFragment(NAMED_PFColor);
-        bindProgramVertex(NAMED_PVOrtho);
-        float dy = 145.f;
-        float y = h - ((h - (dy * 4.f)) / 2);
-
-        drawLine(0, y, 0,  480, y, 0);
-        y -= dy;
-        drawLine(0, y, 0,  480, y, 0);
-        y -= dy;
-        drawLine(0, y, 0,  480, y, 0);
-        y -= dy;
-        drawLine(0, y, 0,  480, y, 0);
-        y -= dy;
-        drawLine(0, y, 0,  480, y, 0);
-    }
-
     // Bug workaround where the last frame is not always displayed
     // So we keep rendering until the bug is fixed.
     return lastFrame((g_PosVelocity != 0) || fracf(g_PosPage) || g_Zoom != state->zoomTarget);
