diff --git a/src/com/android/calculator2/CalculatorExpr.java b/src/com/android/calculator2/CalculatorExpr.java
index 14d9236..e2f6bee 100644
--- a/src/com/android/calculator2/CalculatorExpr.java
+++ b/src/com/android/calculator2/CalculatorExpr.java
@@ -619,9 +619,9 @@
      * The caller supplies the value, degree mode, and short string representation, which must
      * have been previously computed.  Thus this is guaranteed to terminate reasonably quickly.
      */
-    public CalculatorExpr abbreviate(CR val, BoundedRational ratVal,
-                              boolean dm, String sr) {
+    public CalculatorExpr abbreviate(CR val, BoundedRational ratVal, boolean dm, String sr) {
         CalculatorExpr result = new CalculatorExpr();
+        @SuppressWarnings("unchecked")
         Token t = new PreEval(val, ratVal, new CalculatorExpr((ArrayList<Token>) mExpr.clone()),
                 new EvalContext(dm, mExpr.size()), sr);
         result.mExpr.add(t);
diff --git a/src/com/android/calculator2/CalculatorText.java b/src/com/android/calculator2/CalculatorText.java
index f944071..ec45123 100644
--- a/src/com/android/calculator2/CalculatorText.java
+++ b/src/com/android/calculator2/CalculatorText.java
@@ -138,22 +138,20 @@
 
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        if (!isLaidOut()) {
+            // Prevent shrinking/resizing with our variable textSize.
+            setTextSizeInternal(TypedValue.COMPLEX_UNIT_PX, mMaximumTextSize,
+                    false /* notifyListener */);
+            setMinHeight(getLineHeight() + getCompoundPaddingBottom()
+                    + getCompoundPaddingTop());
+        }
+
         // Re-calculate our textSize based on new width.
-        final int width = MeasureSpec.getSize(widthMeasureSpec)
+        mWidthConstraint = MeasureSpec.getSize(widthMeasureSpec)
                 - getPaddingLeft() - getPaddingRight();
-        if (mWidthConstraint != width) {
-            mWidthConstraint = width;
-
-            if (!isLaidOut()) {
-                // Prevent shrinking/resizing with our variable textSize.
-                setTextSizeInternal(TypedValue.COMPLEX_UNIT_PX, mMaximumTextSize,
-                        false /* notifyListener */);
-                setMinHeight(getLineHeight() + getCompoundPaddingBottom()
-                        + getCompoundPaddingTop());
-            }
-
-            setTextSizeInternal(TypedValue.COMPLEX_UNIT_PX, getVariableTextSize(getText()),
-                    false);
+        final float textSize = getVariableTextSize(getText());
+        if (getTextSize() != textSize) {
+            setTextSizeInternal(TypedValue.COMPLEX_UNIT_PX, textSize, false /* notifyListener */);
         }
 
         super.onMeasure(widthMeasureSpec, heightMeasureSpec);
