      *  @see #applicationDPI
      *  @see mx.core.DPIClassification
      */  
-    public function get runtimeDPI():int
-    {
-        return DensityUtil.classifyDPI(flash.system.Capabilities.screenDPI);
-    }
-    
+    public function get runtimeDPI():Number
+    {
+        return DensityUtil.getRuntimeDPI();
+    }
+    
+    //----------------------------------
+    //  runtimeDPIProvider
+    //----------------------------------
+    
+    /**
+     *  A class that extends RuntimeDPIProvider and overrides the default Flex
+     *  calculations for <code>runtimeDPI</code>.
+     * 
+     *  <p>Flex's default mappings are:
+     *     <table class="innertable">
+     *        <tr><td>160 DPI</td><td>&lt;200 DPI</td></tr>
+     *        <tr><td>240 DPI</td><td>&gt;=200 DPI and &lt;280 DPI</td></tr>
+     *        <tr><td>320 DPI</td><td>&gt;=280 DPI</td></tr>
+     *     </table>
+     *  </p>
+     * 
+     *  This property cannot be set by ActionScript code; it must be set in MXML code.
+     * 
+     *  @default spark.components.RuntimeDPIProvider
+     * 
+     *  @see #applicationDPI
+     *  @see #runtimeDPI
+     *  @see mx.core.DPIClassification
+     *  @see mx.core.RuntimeDPIProvider
+     */
+    public function get runtimeDPIProvider():Class
+    {
+        return systemManager.info()["runtimeDPIProvider"];
+    }
+    
+    /**
+     *  @private
+     */
+    public function set runtimeDPIProvider(value:Class):void
+    {
+        // Can't change at run-time so do nothing here.
+        // The compiler will propagate the MXML value to the
+        // systemManager's info object.
+    }
+        
     //----------------------------------
     //  usePreloader
     //----------------------------------

    //----------------------------------
    //  runtimeDPI
    //----------------------------------

    /**
     *  The DPI of the device the application is currently running on.
     *

import mx.core.FlexGlobals;
import mx.core.IInvalidating;
import mx.core.InteractionMode;
import mx.core.RuntimeDPIProvider;
import mx.core.Singleton;
import mx.core.UIComponentGlobals;
import mx.core.mx_internal;
