diff --git a/src/AccRingGeneralVC.mm b/src/AccRingGeneralVC.mm
index 2a220f4f12b3fc027983abc8888bd9cab58d998c..a07278fdc88bd05a86b974f5654c898e5ea398aa 100644
--- a/src/AccRingGeneralVC.mm
+++ b/src/AccRingGeneralVC.mm
@@ -42,6 +42,7 @@
 #import "views/RoundedTextField.h"
 #import "ExportPasswordWC.h"
 #import "utils.h"
+#import "Constants.h"
 
 @interface AccRingGeneralVC ()
 
@@ -114,7 +115,6 @@ typedef NS_ENUM(NSInteger, TagViews) {
 - (void)awakeFromNib
 {
     [super awakeFromNib];
-    [photoView setBordered:YES];
     [addProfilePhotoImage setWantsLayer: YES];
     devicesTableView.delegate = self;
     devicesTableView.dataSource = self;
@@ -142,7 +142,7 @@ typedef NS_ENUM(NSInteger, TagViews) {
     NSImage *image = [[NSImage alloc] initWithData:imageData];
     if(image) {
         [photoView setBordered:NO];
-        [photoView setImage: [image roundCorners: 350]];
+        [photoView setImage: [image roundCorners: image.size.height * 0.5]];
         [addProfilePhotoImage setHidden:YES];
     } else {
         [photoView setImage:nil];
@@ -241,8 +241,8 @@ typedef NS_ENUM(NSInteger, TagViews) {
     }
     if (auto outputImage = [picker outputImage]) {
         auto image = [picker inputImage];
-        CGFloat newSize = MIN(image.size.height, image.size.width);
-        outputImage = [outputImage cropImageToSize:CGSizeMake(newSize, newSize)];
+        CGFloat newSize = MIN(MIN(image.size.height, image.size.width), MAX_IMAGE_SIZE);
+        outputImage = [outputImage imageResizeInsideMax: newSize];
         [photoView setImage: [outputImage roundCorners: outputImage.size.height * 0.5]];
         [photoView setBordered:NO];
         [addProfilePhotoImage setHidden:YES];
diff --git a/src/AccSipGeneralVC.mm b/src/AccSipGeneralVC.mm
index ceba2a48d772615220a809c6ca466bcd420c7c0b..384d58bfe73866dbb8943a9274527c80306483bb 100644
--- a/src/AccSipGeneralVC.mm
+++ b/src/AccSipGeneralVC.mm
@@ -36,6 +36,7 @@
 #import "AccSipGeneralVC.h"
 #import "views/NSColor+RingTheme.h"
 #import "views/NSImage+Extensions.h"
+#import "Constants.h"
 
 @interface AccSipGeneralVC ()
 
@@ -76,7 +77,6 @@ typedef NS_ENUM(NSInteger, TagViews) {
 -(void)viewDidLoad {
     [super viewDidLoad];
     [[self view] setAutoresizingMask: NSViewMinXMargin | NSViewMaxXMargin];
-    [photoView setBordered:YES];
     [addProfilePhotoImage setWantsLayer: YES];
     [self setEditingMode:NO];
     [self updateView];
@@ -93,8 +93,8 @@ typedef NS_ENUM(NSInteger, TagViews) {
     if (auto outputImage = [picker outputImage]) {
         [photoView setBordered:NO];
         auto image = [picker inputImage];
-        CGFloat newSize = MIN(image.size.height, image.size.width);
-        outputImage = [outputImage cropImageToSize:CGSizeMake(newSize, newSize)];
+        CGFloat newSize = MIN(MIN(image.size.height, image.size.width), MAX_IMAGE_SIZE);
+        outputImage = [outputImage imageResizeInsideMax: newSize];
         [photoView setImage: [outputImage roundCorners: outputImage.size.height * 0.5]];
         [addProfilePhotoImage setHidden:YES];
         auto imageToBytes = QByteArray::fromNSData([outputImage TIFFRepresentation]).toBase64();
@@ -128,7 +128,7 @@ typedef NS_ENUM(NSInteger, TagViews) {
     NSImage *image = [[NSImage alloc] initWithData:imageData];
     if(image) {
         [photoView setBordered:NO];
-        [photoView setImage: [image roundCorners: 350]];
+        [photoView setImage: [image roundCorners: image.size.height * 0.5]];
         [addProfilePhotoImage setHidden:YES];
     } else {
         [photoView setImage:nil];
diff --git a/src/AddSIPAccountVC.mm b/src/AddSIPAccountVC.mm
index 0de219d9e6aca69900241180be7962d7f306fd12..5acb4aef1c006f02df5c58f091d64ea518ae78e6 100644
--- a/src/AddSIPAccountVC.mm
+++ b/src/AddSIPAccountVC.mm
@@ -29,6 +29,7 @@
 //ring
 #import "AddSIPAccountVC.h"
 #import "views/NSImage+Extensions.h"
+#import "Constants.h"
 
 @interface AddSIPAccountVC () {
     __unsafe_unretained IBOutlet NSButton* photoView;
@@ -149,8 +150,8 @@ NSTimer* timeoutTimer;
     if (auto outputImage = [picker outputImage]) {
         [photoView setBordered:NO];
         auto image = [picker inputImage];
-        CGFloat newSize = MIN(image.size.height, image.size.width);
-        outputImage = [outputImage cropImageToSize:CGSizeMake(newSize, newSize)];
+        CGFloat newSize = MIN(MIN(image.size.height, image.size.width), MAX_IMAGE_SIZE);
+        outputImage = [outputImage imageResizeInsideMax: newSize];
         [photoView setImage:outputImage];
         [addProfilePhotoImage setHidden:YES];
     } else if(!photoView.image) {
diff --git a/src/Constants.h b/src/Constants.h
index c5987c1409e21d35697dcce1c939ddbcf67b9a37..416f3142332bba0e18b051a871b627be154b7ef9 100644
--- a/src/Constants.h
+++ b/src/Constants.h
@@ -38,3 +38,5 @@ namespace Preferences {
     /* download folder for incoming images*/
     NSString * const DownloadFolder = @"download_folder";
 }
+
+const CGFloat MAX_IMAGE_SIZE = 1024;
diff --git a/src/RingWizardNewAccountVC.mm b/src/RingWizardNewAccountVC.mm
index 9d709b27ef5c5afc0798c3e551384b165d2be336..77f9778a30f35d475f0be256fe83eeb369ee1516 100644
--- a/src/RingWizardNewAccountVC.mm
+++ b/src/RingWizardNewAccountVC.mm
@@ -194,8 +194,8 @@ NSInteger const ERROR_REPEAT_MISMATCH           = -2;
     if (auto outputImage = [picker outputImage]) {
         [photoView setBordered:NO];
         auto image = [picker inputImage];
-        CGFloat newSize = MIN(image.size.height, image.size.width);
-        outputImage = [outputImage cropImageToSize:CGSizeMake(newSize, newSize)];
+        CGFloat newSize = MIN(MIN(image.size.height, image.size.width), MAX_IMAGE_SIZE);
+        outputImage = [outputImage imageResizeInsideMax: newSize];
         [photoView setImage:outputImage];
         [addProfilePhotoImage setHidden:YES];
     } else if(!photoView.image) {