diff --git a/src/AudioPrefsVC.mm b/src/AudioPrefsVC.mm
index 543d63c..901846a 100644
--- a/src/AudioPrefsVC.mm
+++ b/src/AudioPrefsVC.mm
@@ -33,15 +33,23 @@
 @property (assign) IBOutlet NSPopUpButton *inputDeviceList;
 @property (assign) IBOutlet NSButton *alwaysRecordingButton;
 @property (assign) IBOutlet NSButton *muteDTMFButton;
+@property (assign) IBOutlet NSTextField *recordingHeaderTitle;
+@property (assign) IBOutlet NSTextField *recordingpathLabel;
+@property (assign) IBOutlet NSLayoutConstraint* audioMarginTopConstraint;
+@property (assign) IBOutlet NSLayoutConstraint* audioMarginBottomConstraint;
+
+
+
 
 @end
 
 @implementation AudioPrefsVC
-@synthesize recordingsPathControl;
+@synthesize recordingsPathControl, recordingHeaderTitle, recordingpathLabel;
 @synthesize outputDeviceList;
 @synthesize inputDeviceList;
 @synthesize alwaysRecordingButton;
 @synthesize muteDTMFButton;
+@synthesize audioMarginTopConstraint, audioMarginBottomConstraint;
 
 - (void)loadView
 {
@@ -62,6 +70,16 @@
             Audio::Settings::instance().areDTMFMuted()?NSOnState:NSOffState];
     NSArray* pathComponentArray = [self pathComponentArrayWithCurrentUrl:Media::RecordingModel::instance().recordPath().toNSString()];
     [recordingsPathControl setPathComponentCells:pathComponentArray];
+
+    if (appSandboxed()) {
+        [alwaysRecordingButton setHidden:YES];
+        [recordingsPathControl setEnabled:NO];
+        [recordingsPathControl setHidden: YES];
+        [recordingHeaderTitle setHidden: YES];
+        [recordingpathLabel setHidden: YES];
+        audioMarginTopConstraint.constant = 10.0f;
+        audioMarginBottomConstraint.constant = 67.0f;
+    }
 }
 
 - (IBAction)toggleMuteDTMF:(NSButton *)sender
@@ -171,10 +189,7 @@
 }
 
 - (BOOL) panel:(id)sender shouldEnableURL:(NSURL*)url {
-    if(!appSandboxed()) {
-        return YES;
-    }
-    return isUrlAccessibleFromSandbox(url);
+    return YES;
 }
 
 #pragma mark - NSMenuDelegate methods
diff --git a/src/GeneralPrefsVC.mm b/src/GeneralPrefsVC.mm
index 7435098..38574bd 100644
--- a/src/GeneralPrefsVC.mm
+++ b/src/GeneralPrefsVC.mm
@@ -56,6 +56,7 @@
     __unsafe_unretained IBOutlet NSTextField* profileNameField;
     __unsafe_unretained IBOutlet NSImageView* addProfilePhotoImage;
     __unsafe_unretained IBOutlet NSButton *downloadFolder;
+    __unsafe_unretained IBOutlet NSTextField *downloadFolderLabel;
 }
 @end
 
@@ -115,6 +116,12 @@
             [photoView setBordered:NO];
         }
     }
+    if (appSandboxed()) {
+        [downloadFolder setHidden:YES];
+        [downloadFolder setEnabled:NO];
+        [downloadFolderLabel setHidden: YES];
+        return;
+    }
     if (dataTransferModel) {
         downloadFolder.title = [@(dataTransferModel->downloadDirectory.c_str()) lastPathComponent];
     }
@@ -276,10 +283,7 @@
 #pragma mark - NSOpenSavePanelDelegate delegate methods
 
 - (BOOL) panel:(id)sender shouldEnableURL:(NSURL*)url {
-    if(!appSandboxed()) {
-        return YES;
-    }
-    return isUrlAccessibleFromSandbox(url);
+    return YES;
 }
 
 @end
diff --git a/src/RingWindowController.mm b/src/RingWindowController.mm
index 64e59a4..9107eba 100644
--- a/src/RingWindowController.mm
+++ b/src/RingWindowController.mm
@@ -40,6 +40,7 @@
 #import <api/contactmodel.h>
 #import <api/contact.h>
 #import <api/datatransfermodel.h>
+#import <media/recordingmodel.h>
 
 // Ring
 #import "AppDelegate.h"
@@ -53,6 +54,7 @@
 #import "views/NSColor+RingTheme.h"
 #import "views/BackgroundView.h"
 #import "ChooseAccountVC.h"
+#import "utils.h"
 
 @interface RingWindowController () <MigrateRingAccountsDelegate, NSToolbarDelegate>
 
@@ -124,16 +126,17 @@
     NSToolbar *toolbar = self.window.toolbar;
     toolbar.delegate = self;
     [toolbar insertItemWithItemIdentifier:kChangeAccountToolBarItemIdentifier atIndex:1];
-    // set download folder (default - 'Downloads')
+    // set download folder (default - 'Documents')
     NSString* path = [[NSUserDefaults standardUserDefaults] stringForKey:Preferences::DownloadFolder];
     if (!path || path.length == 0) {
-        NSURL *downloadsURL = [[NSFileManager defaultManager]
-                               URLForDirectory:NSDownloadsDirectory
-                               inDomain:NSUserDomainMask appropriateForURL:nil
-                               create:YES error:nil];
-        path = [[downloadsURL path] stringByAppendingString:@"/"];
+        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+        path = [[paths objectAtIndex:0] stringByAppendingString:@"/"];
     }
     lrc_->getDataTransferModel().downloadDirectory = std::string([path UTF8String]);
+    if(appSandboxed()) {
+        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+        Media::RecordingModel::instance().setRecordPath(QString::fromNSString([paths objectAtIndex:0]));
+    }
 }
 
 - (void) connect
