diff --git a/res/layout-land/time_picker_dialog.xml b/res/layout-land/time_picker_dialog.xml
index 7409c6e..2eb400f 100644
--- a/res/layout-land/time_picker_dialog.xml
+++ b/res/layout-land/time_picker_dialog.xml
@@ -16,7 +16,7 @@
   -->
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
+    android:layout_height="@dimen/dialog_height"
     android:orientation="horizontal"
     android:background="@color/gray" >
     <LinearLayout
@@ -88,7 +88,7 @@
         <View
             android:layout_width="match_parent"
             android:layout_height="1dip"
-            android:background="@color/lighter_gray" />
+            android:background="@color/black_20" />
         <LinearLayout
             style="?android:attr/buttonBarStyle"
             android:layout_width="match_parent"
diff --git a/res/layout-sw600dp/time_picker_dialog.xml b/res/layout-sw600dp/time_picker_dialog.xml
index ae01ad0..3b5459f 100644
--- a/res/layout-sw600dp/time_picker_dialog.xml
+++ b/res/layout-sw600dp/time_picker_dialog.xml
@@ -89,7 +89,7 @@
     <View
         android:layout_width="match_parent"
         android:layout_height="1dip"
-        android:background="@color/lighter_gray" />
+        android:background="@color/black_20" />
     <LinearLayout
         style="?android:attr/buttonBarStyle"
         android:layout_width="match_parent"
diff --git a/res/layout/time_picker_dialog.xml b/res/layout/time_picker_dialog.xml
index ae01ad0..d1069dc 100644
--- a/res/layout/time_picker_dialog.xml
+++ b/res/layout/time_picker_dialog.xml
@@ -89,7 +89,7 @@
     <View
         android:layout_width="match_parent"
         android:layout_height="1dip"
-        android:background="@color/lighter_gray" />
+        android:background="@color/black_20" />
     <LinearLayout
         style="?android:attr/buttonBarStyle"
         android:layout_width="match_parent"
@@ -97,9 +97,11 @@
         android:orientation="horizontal" >
         <Button
             android:id="@+id/done_button"
-            style="?android:attr/buttonBarButtonStyle"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:text="@string/done_label" />
+            android:text="@string/done_label"
+            android:textSize="@dimen/done_label_size"
+            android:textColor="@color/black_60"
+            style="?android:attr/buttonBarButtonStyle" />
     </LinearLayout>
 </LinearLayout>
diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml
index dca1757..c8e4f98 100644
--- a/res/values-land/dimens.xml
+++ b/res/values-land/dimens.xml
@@ -20,9 +20,6 @@
 <resources
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"
     xmlns:android="http://schemas.android.com/apk/res/android" >
-    <dimen name="time_label_right_padding">10sp</dimen>
-    <dimen name="time_label_size">40sp</dimen>
-    <dimen name="ampm_label_size">14sp</dimen>
-    <dimen name="header_height">64dip</dimen>
-    <dimen name="footer_height">48dip</dimen>
+    <dimen name="dialog_height">300dip</dimen>
+    <dimen name="left_side_width">270dip</dimen>
 </resources>
\ No newline at end of file
diff --git a/res/values-v14/strings.xml b/res/values-v14/strings.xml
new file mode 100644
index 0000000..66faff9
--- /dev/null
+++ b/res/values-v14/strings.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+</resources>
diff --git a/res/values-v16/strings.xml b/res/values-v16/strings.xml
new file mode 100644
index 0000000..5875d80
--- /dev/null
+++ b/res/values-v16/strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- DO NOT TRANSLATE -->
+    <string name="radial_numbers_typeface">sans-serif-light</string>
+</resources>
diff --git a/res/values-v16/styles.xml b/res/values-v16/styles.xml
index beada7b..88ee2a2 100644
--- a/res/values-v16/styles.xml
+++ b/res/values-v16/styles.xml
@@ -16,7 +16,11 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
     <!-- Style for dialog labels. -->
-    <style name="label">
+    <style name="time_label_thin">
+        <item name="android:fontFamily">sans-serif-light</item>
+    </style>
+
+    <style name="done_button_light">
         <item name="android:fontFamily">sans-serif-light</item>
     </style>
 </resources>
\ No newline at end of file
diff --git a/res/values-v17/styles.xml b/res/values-v17/styles.xml
index 4aadec9..043fe71 100644
--- a/res/values-v17/styles.xml
+++ b/res/values-v17/styles.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
     <!-- Style for dialog labels. -->
-    <style name="label">
+    <style name="time_label_thin">
         <item name="android:fontFamily">sans-serif-thin</item>
     </style>
 </resources>
\ No newline at end of file
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 03c35a7..bbc87e2 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -17,8 +17,9 @@
 <resources>
     <color name="white">#ffffff</color>
     <color name="gray">#08000000</color>
-    <color name="lighter_gray">#15000000</color>
-    <color name="dark_gray">#70000000</color>
-    <color name="black">#000000</color>
+    <color name="black_20">#33000000</color>
+    <color name="black_50">#7F000000</color>
+    <color name="black_60">#99000000</color>
+    <color name="black_80">#CC000000</color>
     <color name="blue">#33b5e5</color>
 </resources>
\ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index cd5f2f9..86c163a 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -20,24 +20,22 @@
 <resources
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"
     xmlns:android="http://schemas.android.com/apk/res/android" >
-    <item name="circle_radius_multiplier" format="float" type="string">0.84</item>
-    <item name="circle_radius_multiplier_24HourMode" format="float" type="string">0.87</item>
-    <item name="selection_radius_multiplier" format="float" type="string">0.16</item>
-    <item name="ampm_circle_radius_multiplier" format="float" type="string">0.175</item>
-    <item name="numbers_radius_multiplier_normal" format="float" type="string">0.8</item>
-    <item name="numbers_radius_multiplier_inner" format="float" type="string">0.60</item>
-    <item name="numbers_radius_multiplier_outer" format="float" type="string">0.83</item>
-    <item name="text_size_multiplier_normal" format="float" type="string">0.2</item>
-    <item name="text_size_multiplier_inner" format="float" type="string">0.15</item>
+    <item name="circle_radius_multiplier" format="float" type="string">0.82</item>
+    <item name="circle_radius_multiplier_24HourMode" format="float" type="string">0.85    </item>
+    <item name="selection_radius_multiplier" format="float" type="string">0.14</item>
+    <item name="ampm_circle_radius_multiplier" format="float" type="string">0.19</item>
+    <item name="numbers_radius_multiplier_normal" format="float" type="string">0.81    </item>
+    <item name="numbers_radius_multiplier_inner" format="float" type="string">0.60    </item>
+    <item name="numbers_radius_multiplier_outer" format="float" type="string">0.83    </item>
+    <item name="text_size_multiplier_normal" format="float" type="string">0.14</item>
+    <item name="text_size_multiplier_inner" format="float" type="string">0.14</item>
     <item name="text_size_multiplier_outer" format="float" type="string">0.11</item>
     <dimen name="time_label_right_padding">12sp</dimen>
-    <dimen name="time_label_size">48sp</dimen>
+    <dimen name="time_label_size">60sp</dimen>
     <dimen name="ampm_label_size">16sp</dimen>
-    <dimen name="done_label_size">14sp</dimen>
-    <dimen name="ampm_left_padding">7dip</dimen>
+    <dimen name="done_label_size">16sp</dimen>
+    <dimen name="ampm_left_padding">6dip</dimen>
     <dimen name="separator_padding">4dip</dimen>
     <dimen name="header_height">96dip</dimen>
     <dimen name="footer_height">48dip</dimen>
-    <dimen name="left_side_width">250dip</dimen>
-    <dimen name="left_side_height">450dip</dimen>
 </resources>
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9533ea7..3614c30 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -23,4 +23,8 @@
     <string name="done_label">Done</string>
     <string name="am_label">AM</string>
     <string name="pm_label">PM</string>
+
+    <!-- DO NOT TRANSLATE -->
+    <string name="radial_numbers_typeface">sans-serif</string>
+    <string name="sans_serif">sans-serif</string>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 767d8ee..b53c851 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -33,19 +33,18 @@
     </style>
 
     <!-- Styles for dialog labels. -->
-    <style name="label" />
+    <style name="time_label_thin" />
+    <style name="done_button_light" />
 
-    <style name="time_label" parent="label">
+    <style name="time_label" parent="time_label_thin">
         <item name="android:textSize">@dimen/time_label_size</item>
+        <item name="android:textColor">@color/black_80</item>
     </style>
 
-    <style name="ampm_label" parent="label">
+    <style name="ampm_label">
         <item name="android:textSize">@dimen/ampm_label_size</item>
         <item name="android:textAllCaps">true</item>
-        <item name="android:textColor">@color/black</item>
+        <item name="android:textColor">@color/black_50</item>
     </style>
 
-    <style name="done_label" parent="label">
-        <item name="android:textSize">@dimen/done_label_size</item>
-    </style>
 </resources>
\ No newline at end of file
diff --git a/src/com/android/datetimepicker/AmPmCirclesView.java b/src/com/android/datetimepicker/AmPmCirclesView.java
index cb04cad..0e2bdb4 100644
--- a/src/com/android/datetimepicker/AmPmCirclesView.java
+++ b/src/com/android/datetimepicker/AmPmCirclesView.java
@@ -35,7 +35,7 @@
 
     private final Paint mPaint = new Paint();
     private int mWhite;
-    private int mDarkGray;
+    private int mBlack50;
     private int mBlue;
     private float mCircleRadiusMultiplier;
     private float mAmPmCircleRadiusMultiplier;
@@ -67,9 +67,10 @@
 
         Resources res = context.getResources();
         mWhite = res.getColor(R.color.white);
-        mDarkGray = res.getColor(R.color.dark_gray);
+        mBlack50 = res.getColor(R.color.black_50);
         mBlue = res.getColor(R.color.blue);
-        Typeface tf = Typeface.create("sans-serif-thin", Typeface.NORMAL);
+        String typefaceFamily = res.getString(R.string.sans_serif);
+        Typeface tf = Typeface.create(typefaceFamily, Typeface.NORMAL);
         mPaint.setTypeface(tf);
         mPaint.setAntiAlias(true);
         mPaint.setTextAlign(Align.CENTER);
@@ -150,10 +151,10 @@
         int pmAlpha = 255;
         if (mAmOrPm == AM) {
             amColor = mBlue;
-            amAlpha = 45;
+            amAlpha = 38;
         } else if (mAmOrPm == PM) {
             pmColor = mBlue;
-            pmAlpha = 45;
+            pmAlpha = 38;
         }
         if (mAmOrPmPressed == AM) {
             amColor = mBlue;
@@ -170,7 +171,7 @@
         mPaint.setAlpha(pmAlpha);
         canvas.drawCircle(mPmXCenter, mAmPmYCenter, mAmPmCircleRadius, mPaint);
 
-        mPaint.setColor(mDarkGray);
+        mPaint.setColor(mBlack50);
         int textYCenter = mAmPmYCenter - (int) (mPaint.descent() + mPaint.ascent()) / 2;
         canvas.drawText(mAmText, mAmXCenter, textYCenter, mPaint);
         canvas.drawText(mPmText, mPmXCenter, textYCenter, mPaint);
diff --git a/src/com/android/datetimepicker/CircleView.java b/src/com/android/datetimepicker/CircleView.java
index cd89410..d7ec92a 100644
--- a/src/com/android/datetimepicker/CircleView.java
+++ b/src/com/android/datetimepicker/CircleView.java
@@ -36,7 +36,7 @@
     private final Paint mPaint = new Paint();
     private boolean mIs24HourMode;
     private int mWhite;
-    private int mBlack;
+    private int mBlack80;
     private float mCircleRadiusMultiplier;
     private float mAmPmCircleRadiusMultiplier;
     private boolean mIsInitialized;
@@ -51,7 +51,7 @@
 
         Resources res = context.getResources();
         mWhite = res.getColor(R.color.white);
-        mBlack = res.getColor(R.color.black);
+        mBlack80 = res.getColor(R.color.black_80);
         mPaint.setAntiAlias(true);
 
         mIsInitialized = false;
@@ -105,7 +105,7 @@
         mPaint.setColor(mWhite);
         canvas.drawCircle(mXCenter, mYCenter, mCircleRadius, mPaint);
 
-        mPaint.setColor(mBlack);
+        mPaint.setColor(mBlack80);
         canvas.drawCircle(mXCenter, mYCenter, 2, mPaint);
     }
 }
diff --git a/src/com/android/datetimepicker/RadialSelectorView.java b/src/com/android/datetimepicker/RadialSelectorView.java
index 5f56b56..bb1f78a 100644
--- a/src/com/android/datetimepicker/RadialSelectorView.java
+++ b/src/com/android/datetimepicker/RadialSelectorView.java
@@ -141,6 +141,11 @@
         mDrawLine = drawLine;
     }
 
+    @Override
+    public boolean hasOverlappingRendering() {
+        return false;
+    }
+
     public void setAnimationRadiusMultiplier(float animationRadiusMultiplier) {
         mAnimationRadiusMultiplier = animationRadiusMultiplier;
     }
@@ -250,13 +255,13 @@
         int pointX = mXCenter + (int) (mLineLength * Math.sin(mSelectionRadians));
         int pointY = mYCenter - (int) (mLineLength * Math.cos(mSelectionRadians));
 
-        mPaint.setAlpha(75);
+        mPaint.setAlpha(60);
         canvas.drawCircle(pointX, pointY, mSelectionRadius, mPaint);
 
         if (mForceDrawDot | mSelectionDegrees % 30 != 0) {
             // We're not on a direct tick.
             mPaint.setAlpha(255);
-            canvas.drawCircle(pointX, pointY, mSelectionRadius / 4, mPaint);
+            canvas.drawCircle(pointX, pointY, (mSelectionRadius * 2 / 7), mPaint);
         } else {
             int lineLength = mLineLength;
             lineLength -= mSelectionRadius;
diff --git a/src/com/android/datetimepicker/RadialTextsView.java b/src/com/android/datetimepicker/RadialTextsView.java
index 6909d5c..b128d0d 100644
--- a/src/com/android/datetimepicker/RadialTextsView.java
+++ b/src/com/android/datetimepicker/RadialTextsView.java
@@ -43,6 +43,8 @@
     private boolean mDrawValuesReady;
     private boolean mIsInitialized;
 
+    private Typeface mTypefaceLight;
+    private Typeface mTypefaceRegular;
     private String[] mTexts;
     private String[] mInnerTexts;
     private boolean mIs24HourMode;
@@ -84,10 +86,12 @@
             return;
         }
 
-        int black = res.getColor(R.color.black);
-        mPaint.setColor(black);
-        Typeface tf = Typeface.create("sans-serif-thin", Typeface.NORMAL);
-        mPaint.setTypeface(tf);
+        int black80 = res.getColor(R.color.black_80);
+        mPaint.setColor(black80);
+        String typefaceFamily = res.getString(R.string.radial_numbers_typeface);
+        mTypefaceLight = Typeface.create(typefaceFamily, Typeface.NORMAL);
+        String typefaceFamilyRegular = res.getString(R.string.sans_serif);
+        mTypefaceRegular = Typeface.create(typefaceFamilyRegular, Typeface.NORMAL);
         mPaint.setAntiAlias(true);
         mPaint.setTextAlign(Align.CENTER);
 
@@ -136,6 +140,11 @@
         mIsInitialized = true;
     }
 
+    @Override
+    public boolean hasOverlappingRendering() {
+        return false;
+    }
+
     public void setAnimationRadiusMultiplier(float animationRadiusMultiplier) {
         mAnimationRadiusMultiplier = animationRadiusMultiplier;
         mTextGridValuesDirty = true;
@@ -187,9 +196,9 @@
             mTextGridValuesDirty = false;
         }
 
-        drawTexts(canvas, mTextSize, mTexts, mTextGridWidths, mTextGridHeights);
+        drawTexts(canvas, mTextSize, mTypefaceLight, mTexts, mTextGridWidths, mTextGridHeights);
         if (mHasInnerCircle) {
-            drawTexts(canvas, mInnerTextSize, mInnerTexts,
+            drawTexts(canvas, mInnerTextSize, mTypefaceRegular, mInnerTexts,
                     mInnerTextGridWidths, mInnerTextGridHeights);
         }
     }
@@ -225,9 +234,10 @@
         textGridWidths[6] = xCenter + offset1;
     }
 
-    private void drawTexts(Canvas canvas, float textSize, String[] texts,
+    private void drawTexts(Canvas canvas, float textSize, Typeface typeface, String[] texts,
             float[] textGridWidths, float[] textGridHeights) {
         mPaint.setTextSize(textSize);
+        mPaint.setTypeface(typeface);
         canvas.drawText(texts[0], textGridWidths[3], textGridHeights[0], mPaint);
         canvas.drawText(texts[1], textGridWidths[4], textGridHeights[1], mPaint);
         canvas.drawText(texts[2], textGridWidths[5], textGridHeights[2], mPaint);
diff --git a/src/com/android/datetimepicker/TimePicker.java b/src/com/android/datetimepicker/TimePicker.java
index 201ba75..3f4b4ef 100644
--- a/src/com/android/datetimepicker/TimePicker.java
+++ b/src/com/android/datetimepicker/TimePicker.java
@@ -114,8 +114,6 @@
         mMinuteRadialSelectorView = new RadialSelectorView(context);
         addView(mMinuteRadialSelectorView);
 
-        setCurrentItemShowing(HOUR_INDEX, false);
-
         mReselectSelectorRunnable = new ReselectSelectorRunnable(this);
 
         mVibrator = (Vibrator) context.getSystemService(Service.VIBRATOR_SERVICE);
diff --git a/src/com/android/datetimepicker/TimePickerDialog.java b/src/com/android/datetimepicker/TimePickerDialog.java
index d76ebd4..2b3960d 100644
--- a/src/com/android/datetimepicker/TimePickerDialog.java
+++ b/src/com/android/datetimepicker/TimePickerDialog.java
@@ -54,6 +54,7 @@
     private static final String KEY_HOUR_OF_DAY = "hour_of_day";
     private static final String KEY_MINUTE = "minute";
     private static final String KEY_IS_24_HOUR_VIEW = "is_24_hour_view";
+    private static final String KEY_CURRENT_ITEM_SHOWING = "current_item_showing";
     public static final int HOUR_INDEX = 0;
     public static final int MINUTE_INDEX = 1;
     public static final int AMPM_INDEX = 2; // NOT a real index for the purpose of what's showing.
@@ -64,7 +65,7 @@
 
     private OnTimeSetListener mCallback;
 
-    private Button mDoneButton;
+    private TextView mDoneButton;
     private TextView mHourView;
     private TextView mMinuteView;
     private TextView mAmPmTextView;
@@ -145,7 +146,7 @@
         Resources res = getResources();
 
         mBlue = res.getColor(R.color.blue);
-        mBlack = res.getColor(R.color.black);
+        mBlack = res.getColor(R.color.black_80);
 
         mHourView = (TextView) view.findViewById(R.id.hours);
         mMinuteView = (TextView) view.findViewById(R.id.minutes);
@@ -156,9 +157,14 @@
         mTimePicker = (TimePicker) view.findViewById(R.id.time_picker);
         mTimePicker.setOnValueSelectedListener(this);
         mTimePicker.initialize(getActivity(), mInitialHourOfDay, mInitialMinute, mIs24HourMode);
+        int currentItemShowing = HOUR_INDEX;
+        if (savedInstanceState != null &&
+                savedInstanceState.containsKey(KEY_CURRENT_ITEM_SHOWING)) {
+            currentItemShowing = savedInstanceState.getInt(KEY_CURRENT_ITEM_SHOWING);
+        }
+        setCurrentItemShowing(currentItemShowing, false);
         mTimePicker.invalidate();
 
-        mHourView.setTextColor(mBlue);
         mHourView.setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -166,7 +172,6 @@
                 mTimePicker.tryVibrate();
             }
         });
-        mMinuteView.setTextColor(mBlack);
         mMinuteView.setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -175,7 +180,7 @@
             }
         });
 
-        mDoneButton = (Button) view.findViewById(R.id.done_button);
+        mDoneButton = (TextView) view.findViewById(R.id.done_button);
         mDoneButton.setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -241,6 +246,7 @@
             outState.putInt(KEY_HOUR_OF_DAY, mTimePicker.getHours());
             outState.putInt(KEY_MINUTE, mTimePicker.getMinutes());
             outState.putBoolean(KEY_IS_24_HOUR_VIEW, mIs24HourMode);
+            outState.putInt(KEY_CURRENT_ITEM_SHOWING, mTimePicker.getCurrentItemShowing());
         }
     }
 
