diff --git a/src/pulsatingscience.cpp b/src/pulsatingscience.cpp
index e04f6f85c9524b667d4687f2d0f609168f68bad5..c355c0be4830865fcf6566723442e971eb73cb65 100644
--- a/src/pulsatingscience.cpp
+++ b/src/pulsatingscience.cpp
@@ -20,6 +20,10 @@
 
 #include "pulsatingscience.h"
 
+#ifdef __APPLE__
+#include "/System/Library/Frameworks/Carbon.framework/Versions/A/Headers/Carbon.h"
+#endif
+
 PulsatingScience::PulsatingScience(QWidget *parent) : QMainWindow(parent)
 {
 	ui.setupUi(this);
@@ -32,7 +36,7 @@ PulsatingScience::PulsatingScience(QWidget *parent) : QMainWindow(parent)
 	// inital status (based on GUI)
 	m_permanentOrbits = ui.actionPermanent_orbits->isChecked();
 	m_rotationAxesVisible = ui.actionRotationAxes->isChecked();
-    m_menuBarVisible = ui.actionMenu_bar->isChecked();
+	m_menuBarVisible = ui.actionMenu_bar->isChecked();
 	m_statusBarVisible = ui.actionStatus_bar->isChecked();
 	m_animControlVisible = true;
 	m_animControlFloating = ui.dockAnimControl->isFloating();
@@ -438,13 +442,34 @@ void PulsatingScience::updatePulsarSemiMajorAxisValue(double value)
 void PulsatingScience::toggleHiddenDemoMode()
 {
 	if(m_hiddenDemoModeActivated) {
+#ifdef __APPLE__
+		// show Menubar & Dock
+		SetSystemUIMode(kUIModeNormal, 0);
+		window()->setWindowFlags(windowFlags()
+							   & ~Qt::FramelessWindowHint
+							   & ~Qt::WindowStaysOnTopHint);
+		window()->showNormal();
+#endif
 		on_actionMenu_bar_toggled(true);
 		ui.actionMenu_bar->setChecked(true);
 		window()->setWindowState(windowState() & ~Qt::WindowFullScreen);
-		ui.dockAnimControl->setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
+		ui.dockAnimControl->setFeatures(QDockWidget::DockWidgetClosable
+									  | QDockWidget::DockWidgetMovable
+									  | QDockWidget::DockWidgetFloatable);
 		m_hiddenDemoModeActivated = false;
 	}
 	else {
+#ifdef __APPLE__
+		// hide Menubar & Dock
+		SetSystemUIMode(kUIModeAllHidden, 0);
+		// don't ever ask my why this works _only_ in exactly this order on the Mac
+		window()->setWindowFlags(windowFlags()
+					 | Qt::FramelessWindowHint
+					 | Qt::WindowStaysOnTopHint);
+		window()->showMaximized();
+		// might be needed to remove the resize handle on some systems
+		// window()->setFixedSize(width(), height());
+#endif
 		on_actionMenu_bar_toggled(false);
 		ui.actionMenu_bar->setChecked(false);
 		window()->setWindowState(windowState() | Qt::WindowFullScreen);