diff --git a/java/tests/VrDemo/res/layout-land/activity_vr.xml b/java/tests/VrDemo/res/layout-land/activity_vr.xml
index 3ab5662..6703923 100644
--- a/java/tests/VrDemo/res/layout-land/activity_vr.xml
+++ b/java/tests/VrDemo/res/layout-land/activity_vr.xml
@@ -23,34 +23,36 @@
     android:paddingBottom="@dimen/activity_vertical_margin"
     tools:context=".VrActivity">
     <view
-        android:layout_width="0dp"
         android:layout_height="match_parent"
+        android:layout_width="0dp"
         class="com.example.android.rs.vr.VrView"
         android:id="@+id/view"
         android:layout_weight="1"/>
 
         <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
             android:orientation="vertical">
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="horizontal">
 
                 <TextView
                     android:id="@+id/title"
                     android:text="@string/volume_name"
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
                     android:layout_weight="1.0"
                     android:gravity="center" />
-            </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:layout_weight="1.0"
+        >
 
         <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:orientation="horizontal">
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
 
                 <ToggleButton
                     android:layout_width="wrap_content"
@@ -106,6 +108,6 @@
                     android:text="@string/save"
                     android:onClick="saveClick" />
             </LinearLayout>
-
+    </LinearLayout>
         </LinearLayout>
  </LinearLayout>
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/VrActivity.java b/java/tests/VrDemo/src/com/example/android/rs/vr/VrActivity.java
index aa64d2a..4fe8f8e 100644
--- a/java/tests/VrDemo/src/com/example/android/rs/vr/VrActivity.java
+++ b/java/tests/VrDemo/src/com/example/android/rs/vr/VrActivity.java
@@ -18,6 +18,8 @@
 
 import android.app.Activity;
 import android.app.ProgressDialog;
+import android.content.pm.ActivityInfo;
+import android.content.res.Configuration;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.renderscript.RenderScript;
@@ -103,6 +105,11 @@
             Log.v(LOGTAG,"done");
             mVrView.setVolume(mRs, v);
             progressDialog.dismiss();
+            if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
+                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+            } else {
+                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+            }
         }
     }
 
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/vr.rs b/java/tests/VrDemo/src/com/example/android/rs/vr/engine/vr.rs
index 997bb10..43fb794 100644
--- a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/vr.rs
+++ b/java/tests/VrDemo/src/com/example/android/rs/vr/engine/vr.rs
@@ -19,7 +19,7 @@
 #pragma rs_fp_relaxed
 
 #define FLOAT_MAX  3.4028234E30f
-#define JITTER_LENGTH 3456
+#define JITTER_LENGTH 3457
 float jitter[JITTER_LENGTH];
 
 float3 s;
@@ -31,6 +31,7 @@
 rs_matrix3x3 matrix3;
 uchar4 base_color;
 static float3 mLight;
+static float rscale;
 
 // material color
 rs_allocation opacity;
@@ -38,7 +39,7 @@
 
 static void fillJitter() {
     for (int i = 0; i < JITTER_LENGTH; i++) {
-        jitter[i] = rsRand(1.0f);
+        jitter[i] = (rsRand(rscale)+rsRand(rscale)+rsRand(rscale))/3;
     }
 }
 
@@ -53,28 +54,15 @@
     base_color.g = 0;
     base_color.b = 0;
     base_color.a = 255;
-    fillJitter();
-    float3 mLightRelitvePos = (float3) {0, 0.7071f, -0.7071f}; // light relitve to camera
+
+    float3 mLightRelitvePos = (float3) {0.f, 0.7071f, -0.7071f}; // light relitve to camera
     mLight = mLightRelitvePos.x + dx + mLightRelitvePos.y * dy + mLightRelitvePos.z * dz;
     mLight = normalize(mLight);
+    rscale = 1.5f/length(dz);
+    fillJitter();
 }
 
-// old simple version
-static float triLinear_old(short v_0_0_0, short v_0_0_1, short v_0_1_0, short v_0_1_1,
-        short v_1_0_0, short v_1_0_1, short v_1_1_0, short v_1_1_1,
-        float3 delta) {
-    float v_0_0 = v_0_0_0 + delta.x * (v_0_0_1 - v_0_0_0);
-    float v_0_1 = v_0_1_0 + delta.x * (v_0_1_1 - v_0_1_0);
-    float v_1_0 = v_1_0_0 + delta.x * (v_1_0_1 - v_1_0_0);
-    float v_1_1 = v_1_1_0 + delta.x * (v_1_1_1 - v_1_1_0);
-    float v_0 = v_0_0 + delta.y * (v_0_1 - v_0_0);
-    float v_1 = v_1_0 + delta.y * (v_1_1 - v_1_0);
-    float v = v_0 + delta.z * (v_1 - v_0);
-    return v;
-}
-
-//  This seemed to improve over above
-static float triLinear(float v_0_0_0, float v_0_0_1, float v_0_1_0, short v_0_1_1,
+static float triLinear(float v_0_0_0, float v_0_0_1, float v_0_1_0, float v_0_1_1,
         float v_1_0_0, float v_1_0_1, float v_1_1_0, float v_1_1_1,
         float3 delta) {
     float v_0_0 = mix(v_0_0_0, v_0_0_1, delta.x);
@@ -173,14 +161,14 @@
                 float sdx = rsGetElementAt_float2(zbuff, max(0, (int) x - 1), y).x - in.x;
                 float sdy = rsGetElementAt_float2(zbuff, x, max(0, (int) y - 1)).x - in.x;
                 float dot_prod = sqrt(1 / (1 + (sdy * sdy + sdx * sdx) * zoomFactor));
-                float opf = op / 255.f;
+                float opf = op  * (1/255.f);
                 uchar4 color = rsGetElementAt_uchar4(color_map, intensity * 2);
                 uchar4 mat = rsGetElementAt_uchar4(color_map, intensity * 2 + 1);
                 float4 fcolor = convert_float4(color);;
 
-                float ambient = mat.x / 255.f;
-                float specular = mat.y / 255.f;
-                float diffuse = mat.z / 255.f;
+                float ambient = mat.x * (1/255.f);
+                float specular = mat.y * (1/255.f);
+                float diffuse = mat.z * (1/255.f);
                 float lop = (ambient + diffuse * dot_prod) * light * opf;
                 light -= opf;
                 total_color += fcolor * lop;
@@ -189,7 +177,7 @@
             }
         }
     }
-    p += dz * rsRand(2.f);
+    p += dz * jitter[(x+(y<<11))%JITTER_LENGTH];
 
     if (light > 0) {
         for (int k = 0; k < izlen - 1; k++) {
@@ -281,9 +269,9 @@
                     // Eye point in this space is in the direction (0,0,-1)
                     // Spec * Math.pow(R_z , P) lets use power == 2 (cheap)
 
-                    float ambient = mat.x / 255.f; // ambient
-                    float specular = mat.y / 255.f; // specular not used right now
-                    float diffuse = mat.z / 255.f; // diffuse
+                    float ambient = mat.x * (1/255.f); // ambient
+                    float specular = mat.y * (1/255.f); // specular not used right now
+                    float diffuse = mat.z  * (1/255.f);// diffuse
                     float lop = (ambient + diffuse * dot_prod + specular * pow(spec, 10)) * light * opf;
                     light -= opf;
                     total_color += fcolor * lop;
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/loaders/Mandelbulb.java b/java/tests/VrDemo/src/com/example/android/rs/vr/loaders/Mandelbulb.java
index 7d05891..9b16039 100644
--- a/java/tests/VrDemo/src/com/example/android/rs/vr/loaders/Mandelbulb.java
+++ b/java/tests/VrDemo/src/com/example/android/rs/vr/loaders/Mandelbulb.java
@@ -31,13 +31,13 @@
 public class Mandelbulb {
     private static final String LOGTAG = "RawLoader";
     private static final String simpleLook = "simple";
-    private static final int[][] simpleOpacity = {{120, 0x0}, {126, 0xFF}};
+    private static final int[][] simpleOpacity = {{120, 0x0}, {140, 0xFF}};
     private static final int[][] simpleColor = {
-            {200, 0x44AA44, 30, 70, 0},
-            {230, 0xAA44AA, 30, 70, 0},
-            {255, 0xAAAAAA, 30, 70, 0}};
+            {200, 0x44AA44, 70, 30, 0},
+            {230, 0xAA44AA, 70, 30, 0},
+            {255, 0xAAAAAA, 70, 30, 0}};
 
-    private static final int SIZE = 512;
+    private static final int SIZE = 256;
     public static final String NAME = "A Mandelbulb";
 
     public static Volume buildRSVolume(RenderScript rs,
