diff --git a/v7/cardview/eclair-mr1/android/support/v7/widget/RoundRectDrawableWithShadow.java b/v7/cardview/eclair-mr1/android/support/v7/widget/RoundRectDrawableWithShadow.java
index 9f6014f..98be3c5 100644
--- a/v7/cardview/eclair-mr1/android/support/v7/widget/RoundRectDrawableWithShadow.java
+++ b/v7/cardview/eclair-mr1/android/support/v7/widget/RoundRectDrawableWithShadow.java
@@ -34,7 +34,7 @@
  * A rounded rectangle drawable which also includes a shadow around.
  */
 class RoundRectDrawableWithShadow extends Drawable {
-
+    final static float SHADOW_MULTIPLIER = 1.5f;
     /*
     * This helper is set by CardView implementations.
     * <p>
@@ -55,7 +55,7 @@
 
     Path mCornerShadowPath;
 
-    float mShadowSize = 6;
+    float mShadowSize;
 
     private boolean mDirty = true;
 
@@ -66,6 +66,8 @@
     RoundRectDrawableWithShadow(Resources resources, int backgroundColor, float radius) {
         mShadowStartColor = resources.getColor(R.color.cardview_shadow_start_color);
         mShadowEndColor = resources.getColor(R.color.cardview_shadow_end_color);
+        mShadowSize = resources.getDimension(R.dimen.cardview_shadow_size) * SHADOW_MULTIPLIER;
+
 
         mPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG);
         mPaint.setColor(backgroundColor);
@@ -90,11 +92,9 @@
 
     @Override
     public boolean getPadding(Rect padding) {
-        if (mCornerRadius == 0) {
-            return super.getPadding(padding);
-        }
-        final int intCornerRadius = (int) Math.ceil(mCornerRadius);
-        padding.set(intCornerRadius, intCornerRadius, intCornerRadius, intCornerRadius);
+        final int topShadow = (int) Math.ceil(mShadowSize * (1 / (SHADOW_MULTIPLIER * 2)));
+        final int sideShadow = (int) Math.ceil(mShadowSize - topShadow);
+        padding.set(sideShadow, topShadow, sideShadow, (int) Math.ceil(mShadowSize));
         return true;
     }
 
@@ -124,11 +124,16 @@
             mDirty = false;
         }
         drawShadow(canvas);
-        final float offset = mShadowSize / 2f;
+        final float offset = mShadowSize * (1 - 1 / (SHADOW_MULTIPLIER * 2));
+        final float horizontalOffset = mShadowSize - offset;
         canvas.translate(0, -offset);
         mPreShadowBounds.bottom += offset;
+        mPreShadowBounds.left -= horizontalOffset;
+        mPreShadowBounds.right += horizontalOffset;
         sRoundRectHelper.drawRoundRect(canvas, mPreShadowBounds, mCornerRadius, mPaint);
         mPreShadowBounds.bottom -= offset;
+        mPreShadowBounds.left += horizontalOffset;
+        mPreShadowBounds.right -= horizontalOffset;
         canvas.translate(0, offset);
     }
 
diff --git a/v7/cardview/res/values/colors.xml b/v7/cardview/res/values/colors.xml
index 1b6f2d4..3ed7087 100644
--- a/v7/cardview/res/values/colors.xml
+++ b/v7/cardview/res/values/colors.xml
@@ -15,8 +15,10 @@
 -->
 
 <resources>
-    <!-- Default background color for CardView. -->
+    <!-- Background color for light CardView. -->
     <color name="cardview_light_background">#FFFAFAFA</color>
+	<!-- Background color for dark CardView. -->
+	<color name="cardview_dark_background">#FF202020</color>
     <!-- Shadow color for the first pixels around CardView. -->
     <color name="cardview_shadow_start_color">#37000000</color>
     <!-- Shadow color for the furthest pixels around CardView. -->
diff --git a/v7/cardview/res/values/dimens.xml b/v7/cardview/res/values/dimens.xml
index e4ca6f0..5fbd42a 100644
--- a/v7/cardview/res/values/dimens.xml
+++ b/v7/cardview/res/values/dimens.xml
@@ -19,4 +19,6 @@
     <dimen name="cardview_default_radius">2dp</dimen>
     <!-- Elevation value to use for CardViews on L+. -->
     <dimen name="cardview_elevation">2dp</dimen>
+    <!-- Shadow size for CardView on pre L. -->
+    <dimen name="cardview_shadow_size">2dp</dimen>
 </resources>
\ No newline at end of file
diff --git a/v7/cardview/res/values/styles.xml b/v7/cardview/res/values/styles.xml
index 12fa3a8..f8a7909 100644
--- a/v7/cardview/res/values/styles.xml
+++ b/v7/cardview/res/values/styles.xml
@@ -14,8 +14,13 @@
      limitations under the License.
 -->
 <resources>
-    <style name="CardViewLight">
+    <style name="CardView">
         <item name="cardBackgroundColor">@color/cardview_light_background</item>
-        <item name="cardCornerRadius">@dimen/cardview_default_radius</item>
+    </style>
+    <style name="CardView.Light">
+        <item name="cardBackgroundColor">@color/cardview_light_background</item>
+    </style>
+    <style name="CardView.Dark">
+        <item name="cardBackgroundColor">@color/cardview_dark_background</item>
     </style>
 </resources>
\ No newline at end of file
diff --git a/v7/cardview/src/android/support/v7/widget/CardView.java b/v7/cardview/src/android/support/v7/widget/CardView.java
index 5c1af68..03f494f 100644
--- a/v7/cardview/src/android/support/v7/widget/CardView.java
+++ b/v7/cardview/src/android/support/v7/widget/CardView.java
@@ -17,7 +17,6 @@
 package android.support.v7.widget;
 
 import android.content.Context;
-import android.content.res.Resources;
 import android.content.res.TypedArray;
 import android.os.Build;
 import android.support.v7.cardview.R;
@@ -35,7 +34,7 @@
  * intersection.
  *
  * @attr ref android.support.v7.cardview.R.styleable#CardView_cardBackgroundColor
- * @attr ref android.support.v7.cardview.R.styleable#CardView_cornerRadius
+ * @attr ref android.support.v7.cardview.R.styleable#CardView_cardCornerRadius
  */
 public class CardView extends FrameLayout implements CardViewDelegate {
 
@@ -68,7 +67,7 @@
 
     private void initialize(Context context, AttributeSet attrs, int defStyleAttr) {
         TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CardView, defStyleAttr,
-                R.style.CardViewLight);
+                R.style.CardView_Light);
         int backgroundColor = a.getColor(R.styleable.CardView_cardBackgroundColor, 0);
         float radius = a.getDimension(R.styleable.CardView_cardCornerRadius, 0);
 
@@ -81,7 +80,7 @@
      *
      * @param radius The radius in pixels of the corners of the rectangle shape
      *
-     * @attr ref android.support.v7.cardview.R.styleable#CardView_cornerRadius
+     * @attr ref android.support.v7.cardview.R.styleable#CardView_cardCornerRadius
      *
      * @see #setRadius(float)
      *
@@ -100,4 +99,4 @@
     public float getRadius() {
         return IMPL.getRadius(this);
     }
-}
\ No newline at end of file
+}
