diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb
index 235754770ca2c40ed280e1d7e398232863043127..8ff464c5bc4f77bc66b6c86e013e18efc2861507 100644
--- a/app/controllers/repositories_controller.rb
+++ b/app/controllers/repositories_controller.rb
@@ -106,7 +106,14 @@ class RepositoriesController < ApplicationController
   
   def diff
     @rev_to = params[:rev_to] ? params[:rev_to].to_i : (@rev - 1)
-    @diff_type = ('sbs' == params[:type]) ? 'sbs' : 'inline'
+    @diff_type = params[:type] || User.current.pref[:diff_type] || 'inline'
+    @diff_type = 'inline' unless %w(inline sbs).include?(@diff_type)
+    
+    # Save diff type as user preference
+    if User.current.logged? && @diff_type != User.current.pref[:diff_type]
+      User.current.pref[:diff_type] = @diff_type
+      User.current.preference.save
+    end
     
     @cache_key = "repositories/diff/#{@repository.id}/" + Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}")    
     unless read_fragment(@cache_key)
diff --git a/app/views/repositories/diff.rhtml b/app/views/repositories/diff.rhtml
index 5094f4713744d721868092a66ab563e2a072765d..c1c33a495a2d17da6347e4535008af7caa81299c 100644
--- a/app/views/repositories/diff.rhtml
+++ b/app/views/repositories/diff.rhtml
@@ -8,7 +8,7 @@
     <% end %>
     <% end %>
   <p><label><%= l(:label_view_diff) %></label>
-  <%= select_tag 'type', options_for_select([[l(:label_diff_inline), "inline"], [l(:label_diff_side_by_side), "sbs"]], params[:type]), :onchange => "if (this.value != '') {this.form.submit()}" %></p>
+  <%= select_tag 'type', options_for_select([[l(:label_diff_inline), "inline"], [l(:label_diff_side_by_side), "sbs"]], @diff_type), :onchange => "if (this.value != '') {this.form.submit()}" %></p>
 <% end %>
 
 <div class="autoscroll">
diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb
index 397bdf68a7fa6a7ec53ff0a57cfcfefece209adb..82cbbdaa70219250881a84c60e59731eed9a3a90 100644
--- a/test/unit/user_test.rb
+++ b/test/unit/user_test.rb
@@ -116,10 +116,10 @@ class UserTest < Test::Unit::TestCase
   
   def test_mail_notification_selected
     @jsmith.mail_notification = false
-    @jsmith.notified_project_ids = [@jsmith.projects.first.id]
+    @jsmith.notified_project_ids = [1]
     @jsmith.save
     @jsmith.reload
-    assert @jsmith.projects.first.recipients.include?(@jsmith.mail)
+    assert Project.find(1).recipients.include?(@jsmith.mail)
   end
   
   def test_mail_notification_none