diff --git a/misc/textarea.js b/misc/textarea.js
index 0ab5e71..1ff1efc 100644
--- a/misc/textarea.js
+++ b/misc/textarea.js
@@ -2,29 +2,12 @@
 
 Drupal.behaviors.textarea = {
   attach: function (context, settings) {
-    $('.form-textarea-wrapper.resizable', context).once('textarea', function () {
-      var staticOffset = null;
-      var textarea = $(this).addClass('resizable-textarea').find('textarea');
-      var grippie = $('<div class="grippie"></div>').mousedown(startDrag);
-
-      grippie.insertAfter(textarea);
-
-      function startDrag(e) {
-        staticOffset = textarea.height() - e.pageY;
-        textarea.css('opacity', 0.25);
-        $(document).mousemove(performDrag).mouseup(endDrag);
-        return false;
-      }
-
-      function performDrag(e) {
-        textarea.height(Math.max(32, staticOffset + e.pageY) + 'px');
-        return false;
-      }
-
-      function endDrag(e) {
-        $(document).unbind('mousemove', performDrag).unbind('mouseup', endDrag);
-        textarea.css('opacity', 1);
-      }
+    // Use jQuery UI to make the textare resizable.
+    $('div.form-textarea-wrapper.resizable textarea', context).once('textarea').resizable({
+      // Provide handles on the bottom right and bottom.
+      handles: 's',
+      // Leave at least one line in the textarea.
+      minHeight: 32
     });
   }
 };
diff --git a/modules/system/system.base.css b/modules/system/system.base.css
index a6748de..0da1b68 100644
--- a/modules/system/system.base.css
+++ b/modules/system/system.base.css
@@ -67,18 +67,28 @@ fieldset.collapsible .fieldset-legend {
 .form-textarea-wrapper textarea {
   display: block;
   margin: 0;
-  width: 100%;
+  width: 100% !important;
   -moz-box-sizing: border-box;
   -webkit-box-sizing: border-box;
   box-sizing: border-box;
 }
-.resizable-textarea .grippie {
+.form-textarea-wrapper .ui-wrapper {
+  width: 100% !important;
+}
+.form-textarea-wrapper .ui-resizable-s {
   background: #eee url(../../misc/grippie.png) no-repeat center 2px;
   border: 1px solid #ddd;
   border-top-width: 0;
-  cursor: s-resize;
   height: 9px;
-  overflow: hidden;
+  bottom: 6px;
+}
+html.js .form-textarea-wrapper.resizable {
+  margin-bottom: -6px;
+}
+.form-textarea-wrapper.resizable .ui-resizable-resizing textarea {
+  opacity: 0.25;
+  filter: alpha(opacity=25);
+  zoom: 1;
 }
 
 /**
diff --git a/modules/system/system.module b/modules/system/system.module
index 21b23f4..b0c3309 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -1150,6 +1150,9 @@ function system_library() {
     'js' => array(
       'misc/textarea.js' => array('group' => JS_DEFAULT),
     ),
+    'dependencies' => array(
+      array('system', 'ui.resizable'),
+    ),
   );
 
   // Drupal's autocomplete widget.
