diff --git a/javafx-ui-common/src/javafx/scene/doc-files/cssref.html b/javafx-ui-common/src/javafx/scene/doc-files/cssref.html
--- a/javafx-ui-common/src/javafx/scene/doc-files/cssref.html
+++ b/javafx-ui-common/src/javafx/scene/doc-files/cssref.html
@@ -4405,7 +4405,39 @@
     </ul>
     <h4><a name="textarea" id="textarea">TextArea</a></h4>
     <p class="styleclass">Style class: text-area</p>
-    <p>TextArea has all the properties and pseudo-class state of <a href="#textinputcontrol">TextInputControl</a></p>
+    <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
+      <thead>
+        <tr>
+          <th class="propertyname">CSS Property</th>
+          <th class="value">Values</th>
+          <th>Default</th>
+          <th>Comments</th>
+        </tr>
+      </thead>
+      <tbody>
+        <tr>
+          <td class="propertyname">-fx-pref-column-count</td>
+          <td class="value">number</td>
+          <td class="default">40</td>
+          <td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td class="propertyname">-fx-pref-row-count</td>
+          <td class="value">number</td>
+          <td class="default">10</td>
+          <td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td class="propertyname">-fx-wrap-text</td>
+          <td class="value">boolean</td>
+          <td class="default">false</td>
+          <td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td colspan="4" class="parents">Also has all properties of <a href="#textinputcontrol">TextInputControl</a></td>
+        </tr>
+      </tbody>
+    </table>
     <h4>Substructure</h4>
     <ul>
       <li>scroll-pane - ScrollPane</li>
@@ -4505,6 +4537,12 @@
           <td>&nbsp;</td>
         </tr>
         <tr>
+          <td class="propertyname">-fx-pref-column-count</td>
+          <td class="value">number</td>
+          <td class="default">12</td>
+          <td>&nbsp;</td>
+        </tr>
+        <tr>
           <td colspan="4" class="parents">Also has all properties of <a href="#textinputcontrol">TextInputControl</a></td>
         </tr>
       </tbody>
diff --git a/javafx-ui-controls/src/javafx/scene/control/TextArea.java b/javafx-ui-controls/src/javafx/scene/control/TextArea.java
--- a/javafx-ui-controls/src/javafx/scene/control/TextArea.java
+++ b/javafx-ui-controls/src/javafx/scene/control/TextArea.java
@@ -25,26 +25,29 @@
 
 package javafx.scene.control;
 
-import com.sun.javafx.beans.annotations.DuplicateInBuilderProperties;
-import javafx.beans.InvalidationListener;
-import javafx.beans.property.BooleanProperty;
-import javafx.beans.property.DoubleProperty;
-import javafx.beans.property.IntegerProperty;
-import javafx.beans.property.IntegerPropertyBase;
-import javafx.beans.property.SimpleBooleanProperty;
-import javafx.beans.property.SimpleDoubleProperty;
-import javafx.beans.value.ChangeListener;
-import javafx.collections.ListChangeListener;
-import javafx.collections.ObservableList;
 import java.util.AbstractList;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
-
+import javafx.beans.InvalidationListener;
+import javafx.beans.property.BooleanProperty;
+import javafx.beans.property.DoubleProperty;
+import javafx.beans.property.IntegerProperty;
+import javafx.beans.property.SimpleDoubleProperty;
+import javafx.beans.value.ChangeListener;
+import javafx.collections.ListChangeListener;
+import javafx.collections.ObservableList;
+import javafx.css.CssMetaData;
+import javafx.css.StyleConverter;
+import javafx.css.StyleableBooleanProperty;
+import javafx.css.StyleableIntegerProperty;
+import javafx.css.StyleableProperty;
+import com.sun.javafx.beans.annotations.DuplicateInBuilderProperties;
 import com.sun.javafx.binding.ExpressionHelper;
 import com.sun.javafx.collections.ListListenerHelper;
 import com.sun.javafx.collections.NonIterableChange;
+import com.sun.javafx.css.converters.SizeConverter;
 import com.sun.javafx.scene.control.skin.TextAreaSkin;
 
 /**
@@ -472,7 +475,19 @@
      * then this variable indicates whether the text should wrap onto
      * another line.
      */
-    private BooleanProperty wrapText = new SimpleBooleanProperty(this, "wrapText");
+    private BooleanProperty wrapText = new StyleableBooleanProperty(false) {
+        @Override public Object getBean() {
+            return TextArea.this;
+        }
+
+        @Override public String getName() {
+            return "wrapText";
+        }
+
+        @Override public CssMetaData getCssMetaData() {
+            return StyleableProperties.WRAP_TEXT;
+        }
+    };
     public final BooleanProperty wrapTextProperty() { return wrapText; }
     public final boolean isWrapText() { return wrapText.getValue(); }
     public final void setWrapText(boolean value) { wrapText.setValue(value); }
@@ -482,7 +497,7 @@
      * The preferred number of text columns. This is used for
      * calculating the {@code TextArea}'s preferred width.
      */
-    private IntegerProperty prefColumnCount = new IntegerPropertyBase(DEFAULT_PREF_COLUMN_COUNT) {
+    private IntegerProperty prefColumnCount = new StyleableIntegerProperty(DEFAULT_PREF_COLUMN_COUNT) {
         @Override
         public void set(int value) {
             if (value < 0) {
@@ -492,6 +507,10 @@
             super.set(value);
         }
 
+        @Override public CssMetaData getCssMetaData() {
+            return StyleableProperties.PREF_COLUMN_COUNT;
+        }
+
         @Override
         public Object getBean() {
             return TextArea.this;
@@ -511,7 +530,7 @@
      * The preferred number of text rows. This is used for calculating
      * the {@code TextArea}'s preferred height.
      */
-    private IntegerProperty prefRowCount = new IntegerPropertyBase(DEFAULT_PREF_ROW_COUNT) {
+    private IntegerProperty prefRowCount = new StyleableIntegerProperty(DEFAULT_PREF_ROW_COUNT) {
         @Override
         public void set(int value) {
             if (value < 0) {
@@ -521,6 +540,10 @@
             super.set(value);
         }
 
+        @Override public CssMetaData getCssMetaData() {
+            return StyleableProperties.PREF_ROW_COUNT;
+        }
+
         @Override
         public Object getBean() {
             return TextArea.this;
@@ -565,4 +588,88 @@
     @Override protected Skin<?> createDefaultSkin() {
         return new TextAreaSkin(this);
     }
+
+    /***************************************************************************
+     *                                                                         *
+     * Stylesheet Handling                                                     *
+     *                                                                         *
+     **************************************************************************/
+
+     /**
+      * @treatAsPrivate implementation detail
+      */
+    private static class StyleableProperties {
+        private static final CssMetaData<TextArea,Number> PREF_COLUMN_COUNT =
+            new CssMetaData<TextArea,Number>("-fx-pref-column-count",
+                SizeConverter.getInstance(), DEFAULT_PREF_COLUMN_COUNT) {
+
+            @Override
+            public boolean isSettable(TextArea n) {
+                return !n.prefColumnCount.isBound();
+            }
+
+            @Override
+            public StyleableProperty<Number> getStyleableProperty(TextArea n) {
+                return (StyleableProperty)n.prefColumnCountProperty();
+            }
+        };
+
+        private static final CssMetaData<TextArea,Number> PREF_ROW_COUNT =
+            new CssMetaData<TextArea,Number>("-fx-pref-row-count",
+                SizeConverter.getInstance(), DEFAULT_PREF_ROW_COUNT) {
+
+            @Override
+            public boolean isSettable(TextArea n) {
+                return !n.prefRowCount.isBound();
+            }
+
+            @Override
+            public StyleableProperty<Number> getStyleableProperty(TextArea n) {
+                return (StyleableProperty)n.prefRowCountProperty();
+            }
+        };
+
+        private static final CssMetaData<TextArea,Boolean> WRAP_TEXT =
+            new CssMetaData<TextArea,Boolean>("-fx-wrap-text",
+                StyleConverter.getBooleanConverter(), false) {
+
+            @Override
+            public boolean isSettable(TextArea n) {
+                return !n.wrapText.isBound();
+            }
+
+            @Override
+            public StyleableProperty<Boolean> getStyleableProperty(TextArea n) {
+                return (StyleableProperty)n.wrapTextProperty();
+            }
+        };
+
+        private static final List<CssMetaData> STYLEABLES;
+        static {
+            final List<CssMetaData> styleables =
+                new ArrayList<CssMetaData>(TextInputControl.getClassCssMetaData());
+            Collections.addAll(styleables,
+                PREF_COLUMN_COUNT,
+                PREF_ROW_COUNT,
+                WRAP_TEXT
+            );
+            STYLEABLES = Collections.unmodifiableList(styleables);
+        }
+    }
+
+    /**
+     * @return The CssMetaData associated with this class, which may include the
+     * CssMetaData of its super classes.
+     */
+    public static List<CssMetaData> getClassCssMetaData() {
+        return StyleableProperties.STYLEABLES;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public List<CssMetaData> getControlCssMetaData() {
+        return getClassCssMetaData();
+    }
 }
diff --git a/javafx-ui-controls/src/javafx/scene/control/TextField.java b/javafx-ui-controls/src/javafx/scene/control/TextField.java
--- a/javafx-ui-controls/src/javafx/scene/control/TextField.java
+++ b/javafx-ui-controls/src/javafx/scene/control/TextField.java
@@ -30,11 +30,11 @@
 import java.util.List;
 import javafx.beans.InvalidationListener;
 import javafx.beans.property.IntegerProperty;
-import javafx.beans.property.IntegerPropertyBase;
 import javafx.beans.property.ObjectProperty;
 import javafx.beans.property.ObjectPropertyBase;
 import javafx.beans.value.ChangeListener;
 import javafx.css.CssMetaData;
+import javafx.css.StyleableIntegerProperty;
 import javafx.css.StyleableObjectProperty;
 import javafx.css.StyleableProperty;
 import javafx.event.ActionEvent;
@@ -43,6 +43,7 @@
 import com.sun.javafx.beans.annotations.DuplicateInBuilderProperties;
 import com.sun.javafx.binding.ExpressionHelper;
 import com.sun.javafx.css.converters.EnumConverter;
+import com.sun.javafx.css.converters.SizeConverter;
 import com.sun.javafx.scene.control.skin.TextFieldSkin;
 
 
@@ -162,7 +163,7 @@
      * The preferred number of text columns. This is used for
      * calculating the {@code TextField}'s preferred width.
      */
-    private IntegerProperty prefColumnCount = new IntegerPropertyBase(DEFAULT_PREF_COLUMN_COUNT) {
+    private IntegerProperty prefColumnCount = new StyleableIntegerProperty(DEFAULT_PREF_COLUMN_COUNT) {
         @Override
         public void set(int value) {
             if (value < 0) {
@@ -172,6 +173,10 @@
             super.set(value);
         }
 
+        @Override public CssMetaData getCssMetaData() {
+            return StyleableProperties.PREF_COLUMN_COUNT;
+        }
+
         @Override
         public Object getBean() {
             return TextField.this;
@@ -274,12 +279,28 @@
             }
         };
 
+        private static final CssMetaData<TextField,Number> PREF_COLUMN_COUNT =
+            new CssMetaData<TextField,Number>("-fx-pref-column-count",
+                SizeConverter.getInstance(), DEFAULT_PREF_COLUMN_COUNT) {
+
+            @Override
+            public boolean isSettable(TextField n) {
+                return n.prefColumnCount == null || !n.prefColumnCount.isBound();
+            }
+
+            @Override
+            public StyleableProperty<Number> getStyleableProperty(TextField n) {
+                return (StyleableProperty)n.prefColumnCountProperty();
+            }
+        };
+
         private static final List<CssMetaData> STYLEABLES;
         static {
             final List<CssMetaData> styleables =
                 new ArrayList<CssMetaData>(TextInputControl.getClassCssMetaData());
             Collections.addAll(styleables,
-                ALIGNMENT
+                ALIGNMENT,
+                PREF_COLUMN_COUNT
             );
             STYLEABLES = Collections.unmodifiableList(styleables);
         }
