diff --git a/main/java/com/google/android/setupcompat/internal/SetupCompatServiceProvider.java b/main/java/com/google/android/setupcompat/internal/SetupCompatServiceProvider.java
index eb3afaa..66503a7 100644
--- a/main/java/com/google/android/setupcompat/internal/SetupCompatServiceProvider.java
+++ b/main/java/com/google/android/setupcompat/internal/SetupCompatServiceProvider.java
@@ -154,11 +154,7 @@
     } else {
       // SetupWizard is not installed/calling app does not have permissions to bind.
       swapServiceContextAndNotify(new ServiceContext(State.BIND_FAILED));
-      Log.e(
-          TAG,
-          String.format(
-              "Context#bindService did not succeed, is the manifest missing %s permission?",
-              COMPAT_PERMISSION));
+      Log.e(TAG, "Context#bindService did not succeed.");
     }
   }
 
@@ -341,7 +337,5 @@
   @SuppressLint("StaticFieldLeak")
   private static volatile SetupCompatServiceProvider instance;
 
-  private static final String COMPAT_PERMISSION =
-      "com.google.android.setupwizard.SETUP_COMPAT_SERVICE";
   private static final String TAG = "SucServiceProvider";
 }
diff --git a/main/java/com/google/android/setupcompat/template/FooterBarMixin.java b/main/java/com/google/android/setupcompat/template/FooterBarMixin.java
index c931de8..3c88791 100644
--- a/main/java/com/google/android/setupcompat/template/FooterBarMixin.java
+++ b/main/java/com/google/android/setupcompat/template/FooterBarMixin.java
@@ -110,7 +110,7 @@
           Button button = buttonContainer.findViewById(id);
           if (button != null) {
             button.setEnabled(enabled);
-            if (applyPartnerResources && !enabled) {
+            if (applyPartnerResources) {
               updateButtonTextColorWithPartnerConfig(
                   button,
                   (id == primaryButtonId)
diff --git a/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigHelper.java b/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigHelper.java
index b437f2b..6dd71b2 100644
--- a/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigHelper.java
+++ b/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigHelper.java
@@ -30,6 +30,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
+import android.util.DisplayMetrics;
 import android.util.Log;
 import android.util.TypedValue;
 import com.google.android.setupcompat.partnerconfig.PartnerConfig.ResourceType;
@@ -237,7 +238,8 @@
     }
 
     if (partnerResourceCache.containsKey(resourceConfig)) {
-      return (float) partnerResourceCache.get(resourceConfig);
+      return getDimensionFromTypedValue(
+          context, (TypedValue) partnerResourceCache.get(resourceConfig));
     }
 
     float result = defaultValue;
@@ -245,7 +247,13 @@
       ResourceEntry resourceEntry = getResourceEntryFromKey(resourceConfig.getResourceName());
       Resources resource = getResourcesByPackageName(context, resourceEntry.getPackageName());
       result = resource.getDimension(resourceEntry.getResourceId());
-      partnerResourceCache.put(resourceConfig, result);
+      TypedValue value =
+          getTypedValueFromResource(
+              resource, resourceEntry.getResourceId(), TypedValue.TYPE_DIMENSION);
+      partnerResourceCache.put(resourceConfig, value);
+      result =
+          getDimensionFromTypedValue(
+              context, (TypedValue) partnerResourceCache.get(resourceConfig));
     } catch (PackageManager.NameNotFoundException | NullPointerException exception) {
       // fall through
     }
@@ -331,4 +339,23 @@
   public static synchronized void resetForTesting() {
     instance = null;
   }
+
+  private TypedValue getTypedValueFromResource(Resources resource, int resId, int type) {
+    TypedValue value = new TypedValue();
+    resource.getValue(resId, value, true);
+    if (value.type != type) {
+      throw new NotFoundException(
+          "Resource ID #0x"
+              + Integer.toHexString(resId)
+              + " type #0x"
+              + Integer.toHexString(value.type)
+              + " is not valid");
+    }
+    return value;
+  }
+
+  private float getDimensionFromTypedValue(Context context, TypedValue value) {
+    DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
+    return value.getDimension(displayMetrics);
+  }
 }
