diff --git a/src/AccRingGeneralVC.mm b/src/AccRingGeneralVC.mm
index 11f5a60ebfd2335f488c7f3fa43c66464660a9e4..214eeb3addcdcd3f79a35f921f50a194644ac70f 100644
--- a/src/AccRingGeneralVC.mm
+++ b/src/AccRingGeneralVC.mm
@@ -137,15 +137,12 @@ typedef NS_ENUM(NSInteger, TagViews) {
 
 -(void) updateView {
     const auto& account = accountModel->getAccountInfo(self.selectedAccountID);
-    QByteArray ba = QByteArray::fromStdString(account.profileInfo.avatar);
 
-    QVariant photo = GlobalInstances::pixmapManipulator().personPhoto(ba, nil);
-    if(QtMac::toNSImage(qvariant_cast<QPixmap>(photo))) {
+    NSData *imageData = [[NSData alloc] initWithBase64EncodedString:@(account.profileInfo.avatar.c_str()) options:NSDataBase64DecodingIgnoreUnknownCharacters];
+    NSImage *image = [[NSImage alloc] initWithData:imageData];
+    if(image) {
         [photoView setBordered:NO];
-        NSImage *image = QtMac::toNSImage(qvariant_cast<QPixmap>(photo));
-        CGFloat newSize = MIN(image.size.height, image.size.width);
-        image = [image cropImageToSize:CGSizeMake(newSize, newSize)];
-        [photoView setImage: [image roundCorners: image.size.height * 0.5]];
+        [photoView setImage: [image roundCorners: 350]];
         [addProfilePhotoImage setHidden:YES];
     } else {
         [photoView setImage:nil];
diff --git a/src/AccSipGeneralVC.mm b/src/AccSipGeneralVC.mm
index 71c62b219973041def7095a66f49147651c76ab4..f0a3d0fc0f1212eeeda330febafeaab1addaa4c8 100644
--- a/src/AccSipGeneralVC.mm
+++ b/src/AccSipGeneralVC.mm
@@ -125,15 +125,11 @@ typedef NS_ENUM(NSInteger, TagViews) {
 
 -(void)updateView {
     const auto& account = accountModel->getAccountInfo(self.selectedAccountID);
-    QByteArray ba = QByteArray::fromStdString(account.profileInfo.avatar);
-
-    QVariant photo = GlobalInstances::pixmapManipulator().personPhoto(ba, nil);
-    if(QtMac::toNSImage(qvariant_cast<QPixmap>(photo))) {
+    NSData *imageData = [[NSData alloc] initWithBase64EncodedString:@(account.profileInfo.avatar.c_str()) options:NSDataBase64DecodingIgnoreUnknownCharacters];
+    NSImage *image = [[NSImage alloc] initWithData:imageData];
+    if(image) {
         [photoView setBordered:NO];
-        NSImage *image = QtMac::toNSImage(qvariant_cast<QPixmap>(photo));
-        CGFloat newSize = MIN(image.size.height, image.size.width);
-        image = [image cropImageToSize:CGSizeMake(newSize, newSize)];
-        [photoView setImage: [image roundCorners: image.size.height * 0.5]];
+        [photoView setImage: [image roundCorners: 350]];
         [addProfilePhotoImage setHidden:YES];
     } else {
         [photoView setImage:nil];
diff --git a/src/ChooseAccountVC.mm b/src/ChooseAccountVC.mm
index 5faa9900c406d59caa46c4548cb2c9bcb3bec846..7441f1d90126684225ae554d10f39c51b3f6d3f5 100644
--- a/src/ChooseAccountVC.mm
+++ b/src/ChooseAccountVC.mm
@@ -122,7 +122,11 @@ NSMenuItem* selectedMenuItem;
     QObject::connect(accMdl_,
                      &lrc::api::NewAccountModel::accountStatusChanged,
                      [self] (const std::string& accountID) {
-                         [self update];
+                         if([self selectedAccount].id == accountID) {
+                             [self update];
+                             return;
+                         }
+                         [self updateMenuItemForAccount:accountID];
                      });
 }
 
@@ -148,6 +152,16 @@ NSMenuItem* selectedMenuItem;
     }
 }
 
+-(void) updateMenuItemForAccount: (const std::string&) accountID {
+    AccountMenuItemView *itemView =
+    [accountsMenu itemWithTag:[@(accountID.c_str()) intValue]].view;
+    if(!itemView) {
+        return;
+    }
+    [self configureView:itemView forAccount:accountID];
+
+}
+
 -(void) updateMenu {
     [accountsMenu removeAllItems];
 
@@ -195,10 +209,10 @@ NSMenuItem* selectedMenuItem;
     [itemView.accountLabel setStringValue:@(account.profileInfo.alias.c_str())];
     NSString* userNameString = [self nameForAccount: account];
     [itemView.userNameLabel setStringValue:userNameString];
-    QByteArray ba = QByteArray::fromStdString(account.profileInfo.avatar);
-    QVariant photo = GlobalInstances::pixmapManipulator().personPhoto(ba, nil);
-    if(QtMac::toNSImage(qvariant_cast<QPixmap>(photo))) {
-        [itemView.accountAvatar setImage:QtMac::toNSImage(qvariant_cast<QPixmap>(photo))];
+    NSData *imageData = [[NSData alloc] initWithBase64EncodedString:@(account.profileInfo.avatar.c_str()) options:NSDataBase64DecodingIgnoreUnknownCharacters];
+    NSImage *image = [[NSImage alloc] initWithData:imageData];
+    if(image) {
+        [itemView.accountAvatar setImage: image];
     } else {
         [itemView.accountAvatar setImage: [NSImage imageNamed:@"default_avatar_overlay.png"]];
     }
@@ -229,12 +243,10 @@ NSMenuItem* selectedMenuItem;
         auto& account = [self selectedAccount];
         if(account.profileInfo.type == lrc::api::profile::Type::INVALID)
             return;
-
-        QByteArray ba = QByteArray::fromStdString(account.profileInfo.avatar);
-
-        QVariant photo = GlobalInstances::pixmapManipulator().personPhoto(ba, nil);
-        if(QtMac::toNSImage(qvariant_cast<QPixmap>(photo))) {
-            [profileImage setImage:QtMac::toNSImage(qvariant_cast<QPixmap>(photo))];
+        NSData *imageData = [[NSData alloc] initWithBase64EncodedString:@(account.profileInfo.avatar.c_str()) options:NSDataBase64DecodingIgnoreUnknownCharacters];
+        NSImage *image = [[NSImage alloc] initWithData:imageData];
+        if(image) {
+            [profileImage setImage: image];
         } else {
             [profileImage setImage: [NSImage imageNamed:@"default_avatar_overlay.png"]];
         }
diff --git a/src/views/NSImage+Extensions.mm b/src/views/NSImage+Extensions.mm
index b53c8282c043308ffad7b97f43619dcdf471d834..1cc859414a787dae9f33ae6703c976658f6dfd7d 100644
--- a/src/views/NSImage+Extensions.mm
+++ b/src/views/NSImage+Extensions.mm
@@ -42,8 +42,7 @@
 }
 
 - (NSImage *) roundCorners:(CGFloat)radius {
-    NSImage *existingImage = self;
-    NSSize existingSize = [existingImage size];
+    NSSize existingSize = [self size];
     NSSize newSize = NSMakeSize(existingSize.width, existingSize.height);
     NSImage *composedImage = [[NSImage alloc] initWithSize:newSize];
 
@@ -55,7 +54,7 @@
     [clipPath setWindingRule:NSEvenOddWindingRule];
     [clipPath addClip];
 
-    [existingImage drawAtPoint:NSZeroPoint fromRect:NSMakeRect(0, 0, newSize.width, newSize.height) operation:NSCompositeSourceOver fraction:1];
+    [self drawAtPoint:NSZeroPoint fromRect:NSMakeRect(0, 0, newSize.width, newSize.height) operation:NSCompositeSourceOver fraction:1];
 
     [composedImage unlockFocus];