diff --git a/examples/flutter_gallery/lib/demo/material/cards_demo.dart b/examples/flutter_gallery/lib/demo/material/cards_demo.dart
index 831d1fa..09435cf 100644
--- a/examples/flutter_gallery/lib/demo/material/cards_demo.dart
+++ b/examples/flutter_gallery/lib/demo/material/cards_demo.dart
@@ -47,12 +47,13 @@
 ];
 
 class TravelDestinationItem extends StatelessWidget {
-  TravelDestinationItem({ Key key, @required this.destination })
+  TravelDestinationItem({ Key key, @required this.destination, this.shape })
     : assert(destination != null && destination.isValid),
       super(key: key);
 
   static const double height = 366.0;
   final TravelDestination destination;
+  final ShapeBorder shape;
 
   @override
   Widget build(BuildContext context) {
@@ -67,6 +68,7 @@
         padding: const EdgeInsets.all(8.0),
         height: height,
         child: new Card(
+          shape: shape,
           child: new Column(
             crossAxisAlignment: CrossAxisAlignment.start,
             children: <Widget>[
@@ -149,14 +151,39 @@
   }
 }
 
-class CardsDemo extends StatelessWidget {
+
+class CardsDemo extends StatefulWidget {
   static const String routeName = '/material/cards';
 
   @override
+  _CardsDemoState createState() => new _CardsDemoState();
+}
+
+class _CardsDemoState extends State<CardsDemo> {
+  ShapeBorder _shape;
+
+  @override
   Widget build(BuildContext context) {
     return new Scaffold(
       appBar: new AppBar(
-        title: const Text('Travel stream')
+        title: const Text('Travel stream'),
+        actions: <Widget>[
+          new IconButton(
+            icon: const Icon(Icons.sentiment_very_satisfied),
+            onPressed: () {
+              setState(() {
+                _shape = _shape != null ? null : const RoundedRectangleBorder(
+                  borderRadius: const BorderRadius.only(
+                    topLeft: const Radius.circular(16.0),
+                    topRight: const Radius.circular(16.0),
+                    bottomLeft: const Radius.circular(2.0),
+                    bottomRight: const Radius.circular(2.0),
+                  ),
+                );
+              });
+            },
+          ),
+        ],
       ),
       body: new ListView(
         itemExtent: TravelDestinationItem.height,
@@ -164,7 +191,10 @@
         children: destinations.map((TravelDestination destination) {
           return new Container(
             margin: const EdgeInsets.only(bottom: 8.0),
-            child: new TravelDestinationItem(destination: destination)
+            child: new TravelDestinationItem(
+              destination: destination,
+              shape: _shape,
+            ),
           );
         }).toList()
       )
diff --git a/packages/flutter/lib/src/material/card.dart b/packages/flutter/lib/src/material/card.dart
index a4ce73a..12940a8 100644
--- a/packages/flutter/lib/src/material/card.dart
+++ b/packages/flutter/lib/src/material/card.dart
@@ -5,6 +5,7 @@
 import 'package:flutter/widgets.dart';
 
 import 'material.dart';
+import 'theme.dart';
 
 /// A material design card. A card has slightly rounded corners and a shadow.
 ///
@@ -62,24 +63,39 @@
   const Card({
     Key key,
     this.color,
-    this.elevation: 2.0,
+    this.elevation,
+    this.shape,
     this.child,
   }) : super(key: key);
 
-  /// The widget below this widget in the tree.
+  /// The card's background color.
   ///
-  /// {@macro flutter.widgets.child}
-  final Widget child;
-
-  /// The color of material used for this card.
+  /// Defines the card's [Material.color].
+  ///
+  /// The default color is defined by the ambient [Theme]: [ThemeData.cardColor].
   final Color color;
 
   /// The z-coordinate at which to place this card. This controls the size of
   /// the shadow below the card.
   ///
-  /// Defaults to 2, the appropriate elevation for cards.
+  /// Defines the card's [Material.elevation].
+  ///
+  /// The default elevation is 1.0.
   final double elevation;
 
+  /// The shape of the card's [Material].
+  ///
+  /// Defines the card's [Material.shape].
+  ///
+  /// The default shape is a [RoundedRectangleBorder] with a circular corner
+  /// radius of 4.0.
+  final ShapeBorder shape;
+
+  /// The widget below this widget in the tree.
+  ///
+  /// {@macro flutter.widgets.child}
+  final Widget child;
+
   @override
   Widget build(BuildContext context) {
     return new Semantics(
@@ -87,11 +103,14 @@
       child: new Container(
         margin: const EdgeInsets.all(4.0),
         child: new Material(
-          color: color,
           type: MaterialType.card,
-          elevation: elevation,
-          child: child
-        )
+          color: color ?? Theme.of(context).cardColor,
+          elevation: elevation ?? 1.0,
+          shape: shape ?? const RoundedRectangleBorder(
+            borderRadius: const BorderRadius.all(const Radius.circular(4.0)),
+          ),
+          child: child,
+        ),
       ),
     );
   }
