diff --git a/misc/textarea.js b/misc/textarea.js
index 0ab5e71..4cb0722 100644
--- a/misc/textarea.js
+++ b/misc/textarea.js
@@ -2,29 +2,14 @@
 
 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);
-      }
+    $('.form-textarea-wrapper.resizable', context).once('textarea', function() {
+      // Use jQuery UI to make the textarea resizable.
+      $('textarea', this).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..8570f86 100644
--- a/modules/system/system.base.css
+++ b/modules/system/system.base.css
@@ -72,13 +72,18 @@ fieldset.collapsible .fieldset-legend {
   -webkit-box-sizing: border-box;
   box-sizing: border-box;
 }
-.resizable-textarea .grippie {
+html.js .form-textarea-wrapper.resizable {
+  margin-bottom: -6px;
+}
+.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;
+}
+.form-textarea-wrapper.resizable .ui-resizable-resizing {
+  opacity: 0.25;
 }
 
 /**
diff --git a/modules/system/system.module b/modules/system/system.module
index 21b23f4..9fcfe36 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -1150,6 +1150,10 @@ function system_library() {
     'js' => array(
       'misc/textarea.js' => array('group' => JS_DEFAULT),
     ),
+    'dependencies' => array(
+      array('system', 'ui.resizable'),
+      array('system', 'ui.mouse'),
+    ),
   );
 
   // Drupal's autocomplete widget.
