diff --git a/olat3/webapp/WEB-INF/src/org/olat/preferences/DbStorage.java b/olat3/webapp/WEB-INF/src/org/olat/preferences/DbStorage.java
index d591f4425d6baa40027d337062949bd0b7f6b1ec..7a8141125c592484aaa8b06f132d308af5739b8c 100644
--- a/olat3/webapp/WEB-INF/src/org/olat/preferences/DbStorage.java
+++ b/olat3/webapp/WEB-INF/src/org/olat/preferences/DbStorage.java
@@ -21,7 +21,12 @@
  */
 package org.olat.preferences;
 
+import java.util.Iterator;
+import java.util.List;
+
 import org.olat.core.id.Identity;
+import org.olat.core.logging.AssertException;
+import org.olat.core.logging.LogDelegator;
 import org.olat.core.util.prefs.Preferences;
 import org.olat.core.util.prefs.PreferencesStorage;
 import org.olat.core.util.xml.XStreamHelper;
@@ -35,7 +40,7 @@ import org.olat.properties.PropertyManager;
  * 
  * @author Felix Jost
  */
-public class DbStorage implements PreferencesStorage {
+public class DbStorage extends LogDelegator implements PreferencesStorage{
 
 	static final String USER_PROPERTY_KEY = "v2guipreferences";
 	
@@ -52,8 +57,26 @@ public class DbStorage implements PreferencesStorage {
 	 * @param identity
 	 * @return
 	 */
-	private DbPrefs getPreferencesFor(Identity identity) {
-		Property guiProperty = PropertyManager.getInstance().findProperty(identity, null, null, null, USER_PROPERTY_KEY);
+	private DbPrefs getPreferencesFor(final Identity identity) {
+		 Property guiProperty = null; 
+		 try { 
+			 guiProperty = PropertyManager.getInstance().findProperty(identity, null, null, null, USER_PROPERTY_KEY); 
+		 } catch (AssertException e) {
+			 // OLAT-6429 detect and delete multiple prefs objects, keep the first one only 
+			 List<Property> guiPropertyList = PropertyManager.getInstance().findProperties(identity, null, null, null, USER_PROPERTY_KEY); 
+			 if (guiPropertyList != null && guiPropertyList.size() > 0) {
+				 logError("Found more than 1 entry for " + USER_PROPERTY_KEY + " in o_property table for user " + identity.getName() + ". Use first of them, deleting the others!", e); 
+				 guiProperty = guiPropertyList.get(0);
+				 Iterator<Property> iterator = guiPropertyList.iterator();
+				 iterator.next();
+				 while (iterator.hasNext()) { 
+					 Property property = (Property) iterator.next(); 
+					 PropertyManager.getInstance().deleteProperty(property); 				 
+					 logInfo("Will delete old property: " + property.getTextValue()); 
+				 } 
+			 }
+		 }
+		
 		if (guiProperty == null) {
 			return createEmptyDbPrefs(identity,false);
 		} else {
diff --git a/olat3/webapp/WEB-INF/src/org/olat/user/ChangePrefsController.java b/olat3/webapp/WEB-INF/src/org/olat/user/ChangePrefsController.java
index 9ef27f4d2ec6cd47226f4558b027721c075eed6c..274933bc9c0f7e505985e6af31e751ad1c493760 100644
--- a/olat3/webapp/WEB-INF/src/org/olat/user/ChangePrefsController.java
+++ b/olat3/webapp/WEB-INF/src/org/olat/user/ChangePrefsController.java
@@ -35,6 +35,7 @@ import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.core.id.Identity;
+import org.olat.core.util.UserSession;
 
 import org.olat.core.util.prefs.Preferences;
 import org.olat.core.util.prefs.PreferencesFactory;
@@ -133,10 +134,15 @@ class SpecialPrefsForm extends FormBasicController {
 	private String[] keys, values;
 	private boolean useAjaxCheckbox = false;
 	
-	public SpecialPrefsForm(UserRequest ureq, WindowControl wControl, Identity changeableIdentity) {
+	public SpecialPrefsForm(final UserRequest ureq, final WindowControl wControl, final Identity changeableIdentity) {
 		super(ureq, wControl);
 		tobeChangedIdentity = changeableIdentity;
-		prefs = PreferencesFactory.getInstance().getPreferencesFor(tobeChangedIdentity, false);
+		// OLAT-6429 load GUI prefs from user session for myself and from factory for other users (as user manager)
+		if (ureq.getIdentity().equalsByPersistableKey(tobeChangedIdentity)) {
+			prefs = ureq.getUserSession().getGuiPreferences();
+		} else {
+			prefs = PreferencesFactory.getInstance().getPreferencesFor(tobeChangedIdentity, false);			
+		}
 		// The ajax configuration is only for user manager (technical stuff)
 		useAjaxCheckbox = ureq.getUserSession().getRoles().isUserManager();
 		// initialize checkbox keys depending on useAjaxCheckbox flag
@@ -158,6 +164,15 @@ class SpecialPrefsForm extends FormBasicController {
 
 	@Override
 	protected void formOK(UserRequest ureq) {
+		// OLAT-6429 don't change another users GUI prefs when he is logged in 
+		if (!ureq.getIdentity().equalsByPersistableKey(tobeChangedIdentity)) {
+			if (UserSession.getSignedOnIdentity(tobeChangedIdentity.getName()) != null) {
+				showError("error.user.logged.in", tobeChangedIdentity.getName());
+				prefsElement.reset();
+				return;
+			}
+		}
+
 		if (useAjaxCheckbox) {
 			prefs.putAndSave(WindowManager.class, "ajax-beta-on", prefsElement.getSelectedKeys().contains("ajax"));
 		}
diff --git a/olat3/webapp/WEB-INF/src/org/olat/user/_i18n/LocalStrings_de.properties b/olat3/webapp/WEB-INF/src/org/olat/user/_i18n/LocalStrings_de.properties
index c69127234da2593110907ffb4abf11ef41805460..6cbe330324b7abd4f989f92fecde3e5f2b2c09ec 100644
--- a/olat3/webapp/WEB-INF/src/org/olat/user/_i18n/LocalStrings_de.properties
+++ b/olat3/webapp/WEB-INF/src/org/olat/user/_i18n/LocalStrings_de.properties
@@ -6,6 +6,7 @@ accessibility.web2aMode.label=Web 2.a Modus f\u00FCr Brailleger\u00E4te
 action.choose=W\u00E4hlen
 ajaxon.global.label=AJAX-Modus ist auf Systemebene eingeschaltet
 ajaxon.label=AJAX-Modus
+error.user.logged.in=Diese Änderung kann nicht vorgenommen werden da der Benutzer {0} zur Zeit eingeloggt ist. Warten Sie bis der Benutzer sich ausloggt und versuchen Sie es erneut. 
 change=\u00C4ndern
 chelp.card1=Sie haben die M\u00F6glichkeit, eine pers\u00F6nliche Visitenkarte zu erstellen, die f\u00FCr alle registrierten OLAT-Benutzer einsehbar ist.
 chelp.card2=Mit Hilfe der Check-Boxen k\u00F6nnen Sie bestimmen, welche Eintr\u00E4ge auf Ihrer Visitenkarte erscheinen sollen.
diff --git a/olat3/webapp/WEB-INF/src/org/olat/user/_i18n/LocalStrings_en.properties b/olat3/webapp/WEB-INF/src/org/olat/user/_i18n/LocalStrings_en.properties
index aff2681f7af9fee9ba331046e8a1bfd79472ffe7..3706882a0045643b783595e2d4239d537c765176 100644
--- a/olat3/webapp/WEB-INF/src/org/olat/user/_i18n/LocalStrings_en.properties
+++ b/olat3/webapp/WEB-INF/src/org/olat/user/_i18n/LocalStrings_en.properties
@@ -7,6 +7,7 @@ action.choose=Select
 ajaxon.global.label=AJAX mode active on system level
 ajaxon.label=AJAX mode
 change=Modify
+error.user.logged.in=This change can not be made as the user {0} is currently logged in. Please wait until the user has logged out and try it again. 
 chelp.accessibility0=Accessibility
 chelp.accessibility1=Visually impaired persons often have trouble reconstructing all changes on their screen.
 chelp.accessibility2=Therefore OLAT offers a special Web 2.a mode which particularly highlights updated elements on screen.
diff --git a/olat3/webapp/static/themes/default/patches/brasato_patch.css b/olat3/webapp/static/themes/default/patches/brasato_patch.css
index 56be1ad19d80ea0924466baad277a546f4bddc31..df28ecd19bb2a468ead36e82b82e562553c3ede6 100644
--- a/olat3/webapp/static/themes/default/patches/brasato_patch.css
+++ b/olat3/webapp/static/themes/default/patches/brasato_patch.css
@@ -17,6 +17,9 @@
 	
 	div.b_closablewapper_handle { height: 2em; }
 	
+	/* IE6 fix wrong positioning of modal overlay which breaks callout windows */
+	* html div.b_modal_overlay {position: absolute;}	
+	
 	/* min-height fix IE6 */
 	* div.b_form div.b_form_general_error { height: 32px;}
 	/* 3-pixel job bug fix for IE6 and IE7: set hasLayout=true and remove margin */
diff --git a/olat3/webapp/static/themes/default/patches/content_patch.css b/olat3/webapp/static/themes/default/patches/content_patch.css
index 8a5610985fc2edec6530e54497f51e28bf852119..aae60d4ab2b5244d412e8422b33f03c22c729a06 100644
--- a/olat3/webapp/static/themes/default/patches/content_patch.css
+++ b/olat3/webapp/static/themes/default/patches/content_patch.css
@@ -14,11 +14,7 @@
 	* html table.b_grid_row td { border-top: 1px solid #ACAAAA; border-bottom: 1px solid #ACAAAA; }
 	
 	/* make IE render images nicely, default rendering is ugly */
-	img { -ms-interpolation-mode:bicubic; }
-	
-	/* IE6 fix wrong positioning of modal overlay which breaks callout windows */
-	* html div.b_modal_overlay {position: absolute;}	
-	
+	img { -ms-interpolation-mode:bicubic; }	
 		
 }