diff --git a/css/redactor.css b/css/redactor.css
index cd84755209f82d0407b68f368cbd8978c48346a8..e6123e23e60353cf93e5282574538fee093b7fec 100644
--- a/css/redactor.css
+++ b/css/redactor.css
@@ -187,7 +187,6 @@ body .redactor_box_fullscreen {
 .redactor_editor img {
   height: auto;
 }
-.redactor_editor div,
 .redactor_editor p,
 .redactor_editor ul,
 .redactor_editor ol,
@@ -207,10 +206,14 @@ body .redactor_box_fullscreen {
   margin-bottom: 15px !important;
 }
 .redactor_editor blockquote {
-  margin-left: 1.5em !important;
-  padding-left: 0 !important;
   color: #777;
+  padding: 10px 20px;
   font-style: italic !important;
+  border-left: 5px solid #eeeeee;
+}
+[dir="rtl"] .redactor_editor blockquote {
+  border-left: none;
+  border-right: 5px solid #eeeeee;
 }
 .redactor_editor ul,
 .redactor_editor ol {
diff --git a/js/osticket.js b/js/osticket.js
index 133c225c7d4e328c72dc4401d268affe7fa561de..f4aeebd1a1075541fadb34c70f4f49ce6fd70452 100644
--- a/js/osticket.js
+++ b/js/osticket.js
@@ -132,7 +132,7 @@ $(document).ready(function(){
         if (!extra) return;
         if (!imgs.length) return;
         extra.append($('<a>')
-          .addClass("action-button show-images")
+          .addClass("action-button show-images pull-right")
           .css({'font-weight':'normal'})
           .text(' ' + __('Show Images'))
           .click(function(ev) {
@@ -194,7 +194,7 @@ showImagesInline = function(urls, thread_id) {
                     }
                 ).append($('<div class="caption">')
                     .append('<span class="filename">'+info.filename+'</span>')
-                    .append('<a href="'+info.download_url+'" class="action-button"><i class="icon-download-alt"></i> ' + __('Download') + '</a>')
+                    .append('<a href="'+info.download_url+'" class="action-button pull-right"><i class="icon-download-alt"></i> ' + __('Download') + '</a>')
                 );
             e.data('wrapped', true);
         }
diff --git a/js/redactor-fonts.js b/js/redactor-fonts.js
index bbf2e99367c51fcc4a997626beb254d5aab893e4..021ca561d63b28bd5e38b8c4f1c4ef8bdc6bfe57 100644
--- a/js/redactor-fonts.js
+++ b/js/redactor-fonts.js
@@ -146,18 +146,42 @@ RedactorPlugins.textdirection = {
         var button = this.buttonAdd('textdirection', __('Change Text Direction'),
             false, dropdown);
 
-        if (this.opts.direction)
+        if (this.opts.direction == 'rtl')
             this.setRtl();
     },
     setRtl: function()
     {
+        var c = this.getCurrent(), s = this.getSelection();
         this.bufferSet();
-        this.blockSetAttr('dir', 'rtl');
-
+        if (s.type == 'Range' && s.focusNode.nodeName != 'div') {
+            this.linebreakHack(s);
+        }
+        else if (!c) {
+            var repl = '<div dir="rtl">' + this.get() + '</div>';
+            this.set(repl, false);
+        }
+        $(this.getCurrent()).attr('dir', 'rtl');
+        this.sync();
     },
     setLtr: function()
     {
+        var c = this.getCurrent(), s = this.getSelection();
         this.bufferSet();
-        this.blockSetAttr('dir', 'ltr');
+        if (s.type == 'Range' && s.focusNode.nodeName != 'div') {
+            this.linebreakHack(s);
+        }
+        else if (!c) {
+            var repl = '<div dir="ltr">' + this.get() + '</div>';
+            this.set(repl, false);
+        }
+        $(this.getCurrent()).attr('dir', 'ltr');
+        this.sync();
+    },
+    linebreakHack: function(sel) {
+        var range = sel.getRangeAt(0);
+        var wrapper = document.createElement('div');
+        wrapper.appendChild(range.extractContents());
+        range.insertNode(wrapper);
+        this.selectionElement(wrapper);
     }
 };
diff --git a/js/redactor-osticket.js b/js/redactor-osticket.js
index 8c19159b387f8fe2209e3e12604bbb510f91ab74..cded2e1f3ffdc7d425428155eec3cf2a0815777d 100644
--- a/js/redactor-osticket.js
+++ b/js/redactor-osticket.js
@@ -233,7 +233,7 @@ $(function() {
                 'plugins': [],
                 'imageGetJson': 'ajax.php/draft/images/browse',
                 'syncBeforeCallback': captureImageSizes,
-                'linebreaks': !$('html').hasClass('rtl'),
+                'linebreaks': true,
                 'tabFocus': false,
                 'toolbarFixedBox': true,
                 'focusCallback': function() { this.$box.addClass('no-pjax'); },
diff --git a/scp/css/scp.css b/scp/css/scp.css
index 3fe5aae23ca5e623bb59b101693e10d58df47a28..2fe63818d17da1f6514482d6b93a69b27c96791b 100644
--- a/scp/css/scp.css
+++ b/scp/css/scp.css
@@ -893,7 +893,7 @@ ul.tabs {
     padding:4px 0 0 20px;
     margin:0;
     margin-bottom: 5px;
-    text-align:center;
+    text-align:left;
     height:29px;
     border-bottom:1px solid #aaa;
     background:#eef3f8;
diff --git a/scp/js/ticket.js b/scp/js/ticket.js
index ca5f3957e25da6f1218aa102e27725f6c51b17e3..2c9398a5ac28bf56b2f8da4ba0c02f927d97fc49 100644
--- a/scp/js/ticket.js
+++ b/scp/js/ticket.js
@@ -306,7 +306,7 @@ $.showImagesInline = function(urls, thread_id) {
                     }
                 ).append($('<div class="caption">')
                     .append('<span class="filename">'+info.filename+'</span>')
-                    .append('<a href="'+info.download_url+'" class="action-button no-pjax"><i class="icon-download-alt"></i> '+__('Download')+'</a>')
+                    .append('<a href="'+info.download_url+'" class="action-button pull-right no-pjax"><i class="icon-download-alt"></i> '+__('Download')+'</a>')
                 );
             e.data('wrapped', true);
         }
@@ -419,7 +419,7 @@ var ticket_onload = function($) {
         if (!extra) return;
         if (!imgs.length) return;
         extra.append($('<a>')
-          .addClass("action-button show-images")
+          .addClass("action-button pull-right show-images")
           .css({'font-weight':'normal'})
           .text(' ' + __('Show Images'))
           .click(function(ev) {