diff --git a/src/inputs/textarea.js b/src/inputs/textarea.js
index 6a853b3..e0f66d1 100644
--- a/src/inputs/textarea.js
+++ b/src/inputs/textarea.js
@@ -53,7 +53,13 @@ $(function(){
             }
             var lines = html.split(/<br\s*\/?>/i);
             for (var i = 0; i < lines.length; i++) {
-                lines[i] = $('<div>').html(lines[i]).text();
+                var text = $('<div>').html(lines[i]).text();
+
+                // Remove newline characters (\n) to avoid them being converted by value2html() method
+                // thus adding extra <br> tags
+                text = text.replace(new RegExp(String.fromCharCode(10), 'g'), '');
+
+                lines[i] = text;
             }
             return lines.join("\n"); 
         },        
diff --git a/test/unit/textarea.js b/test/unit/textarea.js
index 5784189..6b8d526 100644
--- a/test/unit/textarea.js
+++ b/test/unit/textarea.js
@@ -58,7 +58,7 @@ $(function () {
       })            
   
      asyncTest("should replace <br> with newline (on show) and back (on save)", function () {
-        var  v = '12<br>3&lt;i&gt;4<br />56',
+        var  v = '12<br>\n3&lt;i&gt;4<br />56',
              e = $('<a href="#" data-type="textarea" data-pk="1" data-url="post.php">'+v+'</a>').appendTo(fx).editable(),
              v1 = '12\n3<i>4\n56',
              vnew = "12\n3<b>4\n56\n\n78",