diff --git a/src/domain/UBGraphicsItemDelegate.cpp b/src/domain/UBGraphicsItemDelegate.cpp
index 387ffda1..39721a3d 100644
--- a/src/domain/UBGraphicsItemDelegate.cpp
+++ b/src/domain/UBGraphicsItemDelegate.cpp
@@ -107,12 +107,12 @@ UBGraphicsItemDelegate::UBGraphicsItemDelegate(QGraphicsItem* pDelegated, QObjec
     , mFrame(0)
     , mFrameWidth(UBSettings::settings()->objectFrameWidth)
     , mAntiScaleRatio(1.0)
+    , mToolBarItem(NULL)
     , mCanRotate(canRotate)
     , mCanDuplicate(true)
     , mRespectRatio(respectRatio)
     , mMimeData(NULL)
     , mFlippable(false)
-    , mToolBarItem(NULL)
     , mToolBarUsed(useToolBar)
 {
     // NOOP
@@ -1075,11 +1075,11 @@ void MediaTimer::display(const QString &s)
 void MediaTimer::setNumDigits(int numDigits)
 {
     if (numDigits > 99) {
-        qWarning("QLCDNumber::setNumDigits: (%s) Max 99 digits allowed");
+        qWarning("QLCDNumber::setNumDigits: Max 99 digits allowed");
         numDigits = 99;
     }
     if (numDigits < 0) {
-        qWarning("QLCDNumber::setNumDigits: (%s) Min 0 digits allowed");
+        qWarning("QLCDNumber::setNumDigits: Min 0 digits allowed");
         numDigits = 0;
     }
     if (digitStr.isNull()) {                  // from constructor
diff --git a/src/gui/UBKeyboardPalette.cpp b/src/gui/UBKeyboardPalette.cpp
index 846d9d89..3f1fe242 100644
--- a/src/gui/UBKeyboardPalette.cpp
+++ b/src/gui/UBKeyboardPalette.cpp
@@ -243,6 +243,8 @@ void UBKeyboardPalette::adjustSizeAndPosition(bool pUp)
 
 void  UBKeyboardPalette::paintEvent( QPaintEvent* event)
 {
+    checkLayout();
+
     UBActionPalette::paintEvent(event);
 
     QRect r = this->geometry();
diff --git a/src/gui/UBKeyboardPalette.h b/src/gui/UBKeyboardPalette.h
index 3b717fc8..8cee0686 100644
--- a/src/gui/UBKeyboardPalette.h
+++ b/src/gui/UBKeyboardPalette.h
@@ -127,6 +127,7 @@ protected:
 
     void init();
 
+
 private:
 
     QRect originalRect;
@@ -134,6 +135,11 @@ private:
     UBKeyButton** buttons;
     UBKeyboardButton** ctrlButtons;
 
+    /*
+      For MacOS: synchronization with system locale.
+    */
+    void checkLayout();
+
     void createCtrlButtons();
 
     void setInput(const UBKeyboardLocale* locale);
@@ -145,10 +151,6 @@ private:
     void* storage;
     // Linux-related parameters
     int min_keycodes, max_keycodes, byte_per_code;
-
-    // Save locale before activation to restore it after (MAC)
-    QString activeLocale;
-
 };
 
 class UBKeyboardButton : public QWidget
diff --git a/src/gui/UBKeyboardPalette_linux.cpp b/src/gui/UBKeyboardPalette_linux.cpp
index 1b216e9e..317a2b91 100644
--- a/src/gui/UBKeyboardPalette_linux.cpp
+++ b/src/gui/UBKeyboardPalette_linux.cpp
@@ -164,6 +164,9 @@ void UBKeyboardPalette::createCtrlButtons()
 }
 
 
+void UBKeyboardPalette::checkLayout()
+{}
+
 void UBKeyboardPalette::onActivated(bool activated)
 {
     if (activated)
diff --git a/src/gui/UBKeyboardPalette_mac.cpp b/src/gui/UBKeyboardPalette_mac.cpp
index 3b91d782..3b179c36 100644
--- a/src/gui/UBKeyboardPalette_mac.cpp
+++ b/src/gui/UBKeyboardPalette_mac.cpp
@@ -74,32 +74,35 @@ void SetMacLocaleByIdentifier(const QString& id)
 	}
 }
 
-void UBKeyboardPalette::onActivated(bool activated)
+
+void UBKeyboardPalette::checkLayout()
 {
-	if (activated)
-	{
-		TISInputSourceRef selectedLocale = TISCopyCurrentKeyboardInputSource();
-
-		CFStringRef sr = (CFStringRef) TISGetInputSourceProperty(selectedLocale,
-															  kTISPropertyInputSourceID);  
-
-		if (sr!=NULL)
-		{
-			char tmp[1024];
-			CFStringGetCString(sr, tmp, 1024, 0);
-			activeLocale = tmp;	
-		}
-		else
-			activeLocale = "";
-	
+    TISInputSourceRef selectedLocale = TISCopyCurrentKeyboardInputSource();
 
-	    onLocaleChanged(locales[nCurrentLocale]);
-	}
-	else
-	{
-		if (activeLocale != "")
-			SetMacLocaleByIdentifier(activeLocale);
-	}
+    CFStringRef sr = (CFStringRef) TISGetInputSourceProperty(selectedLocale,
+                                                          kTISPropertyInputSourceID);
+
+    if (sr!=NULL)
+    {
+        char clId[1024];
+        CFStringGetCString(sr, clId, 1024, 0);
+
+        for(int i=0; i<nLocalesCount;i++)
+        {
+            if (locales[i]->id == clId)
+            {
+                if (nCurrentLocale!=i)
+                {
+                    setLocale(i);
+                }
+                break;
+            }
+        }
+    }
+}
+
+void UBKeyboardPalette::onActivated(bool)
+{
 }
 
 void UBKeyboardPalette::onLocaleChanged(UBKeyboardLocale* locale)
diff --git a/src/gui/UBKeyboardPalette_win.cpp b/src/gui/UBKeyboardPalette_win.cpp
index 495175c8..cee91e92 100644
--- a/src/gui/UBKeyboardPalette_win.cpp
+++ b/src/gui/UBKeyboardPalette_win.cpp
@@ -64,9 +64,12 @@ void UBKeyboardPalette::createCtrlButtons()
     ctrlButtons[ctrlID++] = new UBLocaleButton(this);                  // Language Switch 
 }
 
+void UBKeyboardPalette::checkLayout()
+{}
+
 void UBKeyboardPalette::onActivated(bool)
-{
-}
+{}
+
 void UBKeyboardPalette::onLocaleChanged(UBKeyboardLocale* )
 {}