diff --git a/src/com/android/launcher3/widget/DeferredAppWidgetHostView.java b/src/com/android/launcher3/widget/DeferredAppWidgetHostView.java
index 57f8bc7..f42142e 100644
--- a/src/com/android/launcher3/widget/DeferredAppWidgetHostView.java
+++ b/src/com/android/launcher3/widget/DeferredAppWidgetHostView.java
@@ -16,7 +16,6 @@
 
 package com.android.launcher3.widget;
 
-import android.annotation.SuppressLint;
 import android.appwidget.AppWidgetProviderInfo;
 import android.content.Context;
 import android.graphics.Canvas;
@@ -31,9 +30,6 @@
 
 import com.android.launcher3.R;
 
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
 /**
  * A widget host views created while the host has not bind to the system service.
  */
@@ -73,34 +69,23 @@
             return;
         }
 
-        // Use double padding so that there is extra space between background and text
+        // Use double padding so that there is extra space between background and text if possible.
         int availableWidth = getMeasuredWidth() - 2 * (getPaddingLeft() + getPaddingRight());
+        if (availableWidth <= 0) {
+            availableWidth = getMeasuredWidth() - (getPaddingLeft() + getPaddingRight());
+        }
         if (mSetupTextLayout != null && mSetupTextLayout.getText().equals(info.label)
                 && mSetupTextLayout.getWidth() == availableWidth) {
             return;
         }
-        try {
-            mSetupTextLayout = new StaticLayout(info.label, mPaint, availableWidth,
-                    Layout.Alignment.ALIGN_CENTER, 1, 0, true);
-        } catch (IllegalArgumentException e) {
-            @SuppressLint("DrawAllocation") StringWriter stringWriter = new StringWriter();
-            @SuppressLint("DrawAllocation") PrintWriter printWriter = new PrintWriter(stringWriter);
-            mActivity.getDeviceProfile().dump(/*prefix=*/"", printWriter);
-            printWriter.flush();
-            String message = "b/203530620 "
-                    + "- availableWidth: " + availableWidth
-                    + ", getMeasuredWidth: " + getMeasuredWidth()
-                    + ", getPaddingLeft: " + getPaddingLeft()
-                    + ", getPaddingRight: " + getPaddingRight()
-                    + ", deviceProfile: " + stringWriter.toString();
-            throw new IllegalArgumentException(message, e);
-        }
+        mSetupTextLayout = new StaticLayout(info.label, mPaint, availableWidth,
+                Layout.Alignment.ALIGN_CENTER, 1, 0, true);
     }
 
     @Override
     protected void onDraw(Canvas canvas) {
         if (mSetupTextLayout != null) {
-            canvas.translate(getPaddingLeft() * 2,
+            canvas.translate((getWidth() - mSetupTextLayout.getWidth()) / 2,
                     (getHeight() - mSetupTextLayout.getHeight()) / 2);
             mSetupTextLayout.draw(canvas);
         }
