diff --git a/src/app/qgssinglesymboldialog.cpp b/src/app/qgssinglesymboldialog.cpp
index 8bb6e7f..5237025 100644
--- a/src/app/qgssinglesymboldialog.cpp
+++ b/src/app/qgssinglesymboldialog.cpp
@@ -252,9 +252,11 @@ QgsSingleSymbolDialog::~QgsSingleSymbolDialog()
 
 void QgsSingleSymbolDialog::selectOutlineColor()
 {
-#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
-  // Native Mac dialog works only for Qt Carbon
-  QColor c = QColorDialog::getColor( btnOutlineColor->color(), this, "", QColorDialog::DontUseNativeDialog );
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor c = colorDialog.currentColor();
 #else
   QColor c = QColorDialog::getColor( btnOutlineColor->color(), this );
 #endif
@@ -270,9 +272,11 @@ void QgsSingleSymbolDialog::selectOutlineColor()
 
 void QgsSingleSymbolDialog::selectFillColor()
 {
-#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
-  // Native Mac dialog works only for Qt Carbon
-  QColor c = QColorDialog::getColor( btnFillColor->color(), this, "", QColorDialog::DontUseNativeDialog );
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor c = colorDialog.currentColor();
 #else
   QColor c = QColorDialog::getColor( btnFillColor->color(), this );
 #endif
diff --git a/src/gui/symbology-ng/qgsellipsesymbollayerv2widget.cpp b/src/gui/symbology-ng/qgsellipsesymbollayerv2widget.cpp
index 711bae4..80c0dee 100644
--- a/src/gui/symbology-ng/qgsellipsesymbollayerv2widget.cpp
+++ b/src/gui/symbology-ng/qgsellipsesymbollayerv2widget.cpp
@@ -188,7 +188,14 @@ void QgsEllipseSymbolLayerV2Widget::on_btnChangeColorBorder_clicked()
 {
   if ( mLayer )
   {
+  #ifdef QT_MAC_USE_COCOA
+    QColorDialog colorDialog( this );
+    colorDialog.setOption( QColorDialog::NoButtons );
+    colorDialog.exec();
+    QColor newColor = colorDialog.currentColor();
+  #else
     QColor newColor = QColorDialog::getColor( mLayer->outlineColor() );
+  #endif
     if ( newColor.isValid() )
     {
       mLayer->setOutlineColor( newColor );
@@ -201,7 +208,14 @@ void QgsEllipseSymbolLayerV2Widget::on_btnChangeColorFill_clicked()
 {
   if ( mLayer )
   {
+  #ifdef QT_MAC_USE_COCOA
+    QColorDialog colorDialog( this );
+    colorDialog.setOption( QColorDialog::NoButtons );
+    colorDialog.exec();
+    QColor newColor = colorDialog.currentColor();
+  #else
     QColor newColor = QColorDialog::getColor( mLayer->fillColor() );
+  #endif
     if ( newColor.isValid() )
     {
       mLayer->setFillColor( newColor );
diff --git a/src/gui/symbology-ng/qgspointdisplacementrendererwidget.cpp b/src/gui/symbology-ng/qgspointdisplacementrendererwidget.cpp
index b43c4b8..2bbe6ce 100644
--- a/src/gui/symbology-ng/qgspointdisplacementrendererwidget.cpp
+++ b/src/gui/symbology-ng/qgspointdisplacementrendererwidget.cpp
@@ -231,7 +231,14 @@ void QgsPointDisplacementRendererWidget::on_mCircleColorButton_clicked()
   }
 
 #if QT_VERSION >= 0x040500
+  #ifdef QT_MAC_USE_COCOA
+    QColorDialog colorDialog( this );
+    colorDialog.setOption( QColorDialog::NoButtons );
+    colorDialog.exec();
+    QColor newColor = colorDialog.currentColor();
+  #else
   QColor newColor = QColorDialog::getColor( mRenderer->circleColor(), 0, tr( "Circle color" ), QColorDialog::ShowAlphaChannel );
+  #endif
 #else
   QColor newColor = QColorDialog::getColor( mRenderer->circleColor() );
 #endif
@@ -250,7 +257,14 @@ void QgsPointDisplacementRendererWidget::on_mLabelColorButton_clicked()
   }
 
 #if QT_VERSION >= 0x040500
+  #ifdef QT_MAC_USE_COCOA
+    QColorDialog colorDialog( this );
+    colorDialog.setOption( QColorDialog::NoButtons );
+    colorDialog.exec();
+    QColor newColor = colorDialog.currentColor();
+  #else
   QColor newColor = QColorDialog::getColor( mRenderer->labelColor(), 0, tr( "Label color" ), QColorDialog::ShowAlphaChannel );
+  #endif
 #else
   QColor newColor = QColorDialog::getColor( mRenderer->labelColor() );
 #endif
diff --git a/src/gui/symbology-ng/qgssymbollayerv2widget.cpp b/src/gui/symbology-ng/qgssymbollayerv2widget.cpp
index a4e3d6e..30d1ec6 100644
--- a/src/gui/symbology-ng/qgssymbollayerv2widget.cpp
+++ b/src/gui/symbology-ng/qgssymbollayerv2widget.cpp
@@ -102,11 +102,11 @@ void QgsSimpleLineSymbolLayerV2Widget::penWidthChanged()
 
 void QgsSimpleLineSymbolLayerV2Widget::colorChanged()
 {
-#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
-  // Native Mac dialog works only for Qt Carbon
-  // Qt bug: http://bugreports.qt.nokia.com/browse/QTBUG-14889
-  // FIXME need to also check max QT_VERSION when Qt bug fixed
-  QColor color = QColorDialog::getColor( mLayer->color(), this, "", QColorDialog::DontUseNativeDialog );
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor color = colorDialog.currentColor();
 #else
   QColor color = QColorDialog::getColor( mLayer->color(), this );
 #endif
@@ -251,11 +251,11 @@ void QgsSimpleMarkerSymbolLayerV2Widget::setName()
 
 void QgsSimpleMarkerSymbolLayerV2Widget::setColorBorder()
 {
-#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
-  // Native Mac dialog works only for Qt Carbon
-  // Qt bug: http://bugreports.qt.nokia.com/browse/QTBUG-14889
-  // FIXME need to also check max QT_VERSION when Qt bug fixed
-  QColor borderColor = QColorDialog::getColor( mLayer->borderColor(), this, "", QColorDialog::DontUseNativeDialog );
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor borderColor = colorDialog.currentColor();
 #else
   QColor borderColor = QColorDialog::getColor( mLayer->borderColor(), this );
 #endif
@@ -268,11 +268,11 @@ void QgsSimpleMarkerSymbolLayerV2Widget::setColorBorder()
 
 void QgsSimpleMarkerSymbolLayerV2Widget::setColorFill()
 {
-#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
-  // Native Mac dialog works only for Qt Carbon
-  // Qt bug: http://bugreports.qt.nokia.com/browse/QTBUG-14889
-  // FIXME need to also check max QT_VERSION when Qt bug fixed
-  QColor color = QColorDialog::getColor( mLayer->color(), this, "", QColorDialog::DontUseNativeDialog );
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor color = colorDialog.currentColor();
 #else
   QColor color = QColorDialog::getColor( mLayer->color(), this );
 #endif
@@ -349,11 +349,11 @@ QgsSymbolLayerV2* QgsSimpleFillSymbolLayerV2Widget::symbolLayer()
 
 void QgsSimpleFillSymbolLayerV2Widget::setColor()
 {
-#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
-  // Native Mac dialog works only for Qt Carbon
-  // Qt bug: http://bugreports.qt.nokia.com/browse/QTBUG-14889
-  // FIXME need to also check max QT_VERSION when Qt bug fixed
-  QColor color = QColorDialog::getColor( mLayer->color(), this, "", QColorDialog::DontUseNativeDialog );
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor color = colorDialog.currentColor();
 #else
   QColor color = QColorDialog::getColor( mLayer->color(), this );
 #endif
@@ -366,11 +366,11 @@ void QgsSimpleFillSymbolLayerV2Widget::setColor()
 
 void QgsSimpleFillSymbolLayerV2Widget::setBorderColor()
 {
-#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
-  // Native Mac dialog works only for Qt Carbon
-  // Qt bug: http://bugreports.qt.nokia.com/browse/QTBUG-14889
-  // FIXME need to also check max QT_VERSION when Qt bug fixed
-  QColor color = QColorDialog::getColor( mLayer->borderColor(), this, "", QColorDialog::DontUseNativeDialog );
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor color = colorDialog.currentColor();
 #else
   QColor color = QColorDialog::getColor( mLayer->borderColor(), this );
 #endif
@@ -723,7 +723,14 @@ void QgsSvgMarkerSymbolLayerV2Widget::on_mChangeColorButton_clicked()
   {
     return;
   }
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor c = colorDialog.currentColor();
+#else
   QColor c = QColorDialog::getColor( mLayer->fillColor() );
+#endif
   if ( c.isValid() )
   {
     mLayer->setFillColor( c );
@@ -737,7 +744,14 @@ void QgsSvgMarkerSymbolLayerV2Widget::on_mChangeBorderColorButton_clicked()
   {
     return;
   }
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor c = colorDialog.currentColor();
+#else
   QColor c = QColorDialog::getColor( mLayer->outlineColor() );
+#endif
   if ( c.isValid() )
   {
     mLayer->setOutlineColor( c );
@@ -787,11 +801,11 @@ QgsSymbolLayerV2* QgsLineDecorationSymbolLayerV2Widget::symbolLayer()
 
 void QgsLineDecorationSymbolLayerV2Widget::colorChanged()
 {
-#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
-  // Native Mac dialog works only for Qt Carbon
-  // Qt bug: http://bugreports.qt.nokia.com/browse/QTBUG-14889
-  // FIXME need to also check max QT_VERSION when Qt bug fixed
-  QColor color = QColorDialog::getColor( mLayer->color(), this, "", QColorDialog::DontUseNativeDialog );
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor color = colorDialog.currentColor();
 #else
   QColor color = QColorDialog::getColor( mLayer->color(), this );
 #endif
@@ -947,7 +961,14 @@ void QgsSVGFillSymbolLayerWidget::on_mChangeColorButton_clicked()
   {
     return;
   }
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor c = colorDialog.currentColor();
+#else
   QColor c = QColorDialog::getColor( mLayer->svgFillColor() );
+#endif
   if ( c.isValid() )
   {
     mLayer->setSvgFillColor( c );
@@ -961,7 +982,14 @@ void QgsSVGFillSymbolLayerWidget::on_mChangeBorderColorButton_clicked()
   {
     return;
   }
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor c = colorDialog.currentColor();
+#else
   QColor c = QColorDialog::getColor( mLayer->svgOutlineColor() );
+#endif
   if ( c.isValid() )
   {
     mLayer->setSvgOutlineColor( c );
@@ -1049,7 +1077,14 @@ void QgsLinePatternFillSymbolLayerWidget::on_mColorPushButton_clicked()
 {
   if ( mLayer )
   {
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor c = colorDialog.currentColor();
+#else
     QColor c = QColorDialog::getColor( mLayer->color() );
+#endif
     if ( c.isValid() )
     {
       mLayer->setColor( c );
@@ -1224,11 +1259,11 @@ void QgsFontMarkerSymbolLayerV2Widget::setFontFamily( const QFont& font )
 
 void QgsFontMarkerSymbolLayerV2Widget::setColor()
 {
-#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
-  // Native Mac dialog works only for Qt Carbon
-  // Qt bug: http://bugreports.qt.nokia.com/browse/QTBUG-14889
-  // FIXME need to also check max QT_VERSION when Qt bug fixed
-  QColor color = QColorDialog::getColor( mLayer->color(), this, "", QColorDialog::DontUseNativeDialog );
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor color = colorDialog.currentColor();
 #else
   QColor color = QColorDialog::getColor( mLayer->color(), this );
 #endif
diff --git a/src/gui/symbology-ng/qgssymbolv2selectordialog.cpp b/src/gui/symbology-ng/qgssymbolv2selectordialog.cpp
index 57b12b3..e84011d 100644
--- a/src/gui/symbology-ng/qgssymbolv2selectordialog.cpp
+++ b/src/gui/symbology-ng/qgssymbolv2selectordialog.cpp
@@ -188,11 +188,11 @@ void QgsSymbolV2SelectorDialog::changeSymbolProperties()
 
 void QgsSymbolV2SelectorDialog::setSymbolColor()
 {
-#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
-  // Native Mac dialog works only for Qt Carbon
-  // Qt bug: http://bugreports.qt.nokia.com/browse/QTBUG-14889
-  // FIXME need to also check max QT_VERSION when Qt bug fixed
-  QColor color = QColorDialog::getColor( mSymbol->color(), this, "", QColorDialog::DontUseNativeDialog );
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor color = colorDialog.currentColor();
 #else
   QColor color = QColorDialog::getColor( mSymbol->color(), this );
 #endif
diff --git a/src/gui/symbology-ng/qgsvectorgradientcolorrampv2dialog.cpp b/src/gui/symbology-ng/qgsvectorgradientcolorrampv2dialog.cpp
index 816b562..b2c69ac 100644
--- a/src/gui/symbology-ng/qgsvectorgradientcolorrampv2dialog.cpp
+++ b/src/gui/symbology-ng/qgsvectorgradientcolorrampv2dialog.cpp
@@ -87,11 +87,11 @@ void QgsVectorGradientColorRampV2Dialog::updatePreview()
 
 void QgsVectorGradientColorRampV2Dialog::setColor1()
 {
-#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
-  // Native Mac dialog works only for Qt Carbon
-  // Qt bug: http://bugreports.qt.nokia.com/browse/QTBUG-14889
-  // FIXME need to also check max QT_VERSION when Qt bug fixed
-  QColor color = QColorDialog::getColor( mRamp->color1(), this, "", QColorDialog::DontUseNativeDialog );
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor color = colorDialog.currentColor();
 #else
   QColor color = QColorDialog::getColor( mRamp->color1(), this );
 #endif
@@ -103,11 +103,11 @@ void QgsVectorGradientColorRampV2Dialog::setColor1()
 
 void QgsVectorGradientColorRampV2Dialog::setColor2()
 {
-#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
-  // Native Mac dialog works only for Qt Carbon
-  // Qt bug: http://bugreports.qt.nokia.com/browse/QTBUG-14889
-  // FIXME need to also check max QT_VERSION when Qt bug fixed
-  QColor color = QColorDialog::getColor( mRamp->color2(), this, "", QColorDialog::DontUseNativeDialog );
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor color = colorDialog.currentColor();
 #else
   QColor color = QColorDialog::getColor( mRamp->color2(), this );
 #endif
@@ -142,11 +142,11 @@ void QgsVectorGradientColorRampV2Dialog::stopDoubleClicked( QTreeWidgetItem* ite
 {
   if ( column == 0 )
   {
-#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
-    // Native Mac dialog works only for Qt Carbon
-    // Qt bug: http://bugreports.qt.nokia.com/browse/QTBUG-14889
-    // FIXME need to also check max QT_VERSION when Qt bug fixed
-    QColor color = QColorDialog::getColor( item->data( 0, StopColorRole ).value<QColor>(), this, "", QColorDialog::DontUseNativeDialog );
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor color = colorDialog.currentColor();
 #else
     QColor color = QColorDialog::getColor( item->data( 0, StopColorRole ).value<QColor>(), this );
 #endif
@@ -188,14 +188,11 @@ void QgsVectorGradientColorRampV2Dialog::stopDoubleClicked( QTreeWidgetItem* ite
 
 void QgsVectorGradientColorRampV2Dialog::addStop()
 {
-#if defined(Q_WS_MAC) && QT_VERSION >= 0x040500 && defined(QT_MAC_USE_COCOA)
-  // Native Mac dialog works only for Qt Carbon
-  // Qt bug: http://bugreports.qt.nokia.com/browse/QTBUG-14889
-  // also Qt 4.7 Mac Cocoa bug: calling QInputDialog::getInt after QColorDialog::getColor will freeze app
-  // workaround: call QColorDialog::getColor below instead of here,
-  // but not needed at this time because of the other Qt bug
-  // FIXME need to also check max QT_VERSION when Qt bug(s) fixed
-  QColor color = QColorDialog::getColor( QColor(), this, "", QColorDialog::DontUseNativeDialog );
+#ifdef QT_MAC_USE_COCOA
+  QColorDialog colorDialog( this );
+  colorDialog.setOption( QColorDialog::NoButtons );
+  colorDialog.exec();
+  QColor color = colorDialog.currentColor();
 #else
   QColor color = QColorDialog::getColor( QColor(), this );
 #endif
