diff --git a/src/app/qgsdecorationgrid.cpp b/src/app/qgsdecorationgrid.cpp
index 8e1dc1b..c9ab063 100644
--- a/src/app/qgsdecorationgrid.cpp
+++ b/src/app/qgsdecorationgrid.cpp
@@ -158,7 +158,7 @@ void QgsDecorationGrid::projectRead()
     // set default symbol : cross with width=20
     QgsSymbolLayerV2List symbolList;
     symbolList << new QgsSimpleMarkerSymbolLayerV2( "cross", DEFAULT_SIMPLEMARKER_COLOR,
-        DEFAULT_SIMPLEMARKER_BORDERCOLOR, 20, 0 );
+        DEFAULT_SIMPLEMARKER_STYLE , DEFAULT_SIMPLEMARKER_BORDERCOLOR, 20, 0 );
     mMarkerSymbol = new QgsMarkerSymbolV2( symbolList );
     // mMarkerSymbol = new QgsMarkerSymbolV2();
   }
diff --git a/src/core/symbology-ng/qgsfillsymbollayerv2.cpp b/src/core/symbology-ng/qgsfillsymbollayerv2.cpp
index 674e563..4f289a7 100644
--- a/src/core/symbology-ng/qgsfillsymbollayerv2.cpp
+++ b/src/core/symbology-ng/qgsfillsymbollayerv2.cpp
@@ -80,12 +80,16 @@ void QgsSimpleFillSymbolLayerV2::startRender( QgsSymbolV2RenderContext& context
   }
 
   QColor selColor = context.selectionColor();
-  // selColor.setAlphaF( context.alpha() );
+  QColor selPenColor = selColor == mColor ? selColor : mBorderColor;
+  if ( ! selectionIsOpaque ) selColor.setAlphaF( context.alpha() );
   mSelBrush = QBrush( selColor );
+  // N.B. unless a "selection line colour" is implemented in addition to the "selection colour" option
+  // this would mean symbols with "no fill" look the same whether or not they are selected
   if ( selectFillStyle )
     mSelBrush.setStyle( mBrushStyle );
   mBorderColor.setAlphaF( context.alpha() );
   mPen = QPen( mBorderColor );
+  mSelPen = QPen( selPenColor );
   mPen.setStyle( mBorderStyle );
   mPen.setWidthF( context.outputLineWidth( mBorderWidth ) );
 }
@@ -105,6 +109,7 @@ void QgsSimpleFillSymbolLayerV2::renderPolygon( const QPolygonF& points, QList<Q
 
   p->setBrush( context.selected() ? mSelBrush : mBrush );
   p->setPen( mPen );
+  p->setPen( context.selected() ? mSelPen : mPen );
 
   if ( !mOffset.isNull() )
     p->translate( mOffset );
@@ -213,8 +218,9 @@ void QgsImageFillSymbolLayer::renderPolygon( const QPolygonF& points, QList<QPol
   if ( context.selected() )
   {
     QColor selColor = context.selectionColor();
-    if ( ! selectionIsOpaque )
-      selColor.setAlphaF( context.alpha() );
+	// Alister - this doesn't seem to work here
+    //if ( ! selectionIsOpaque )
+    //  selColor.setAlphaF( context.alpha() );
     p->setBrush( QBrush( selColor ) );
     _renderPolygon( p, points, rings );
   }
diff --git a/src/core/symbology-ng/qgsfillsymbollayerv2.h b/src/core/symbology-ng/qgsfillsymbollayerv2.h
index 950f213..8df9df8 100644
--- a/src/core/symbology-ng/qgsfillsymbollayerv2.h
+++ b/src/core/symbology-ng/qgsfillsymbollayerv2.h
@@ -80,6 +80,7 @@ class CORE_EXPORT QgsSimpleFillSymbolLayerV2 : public QgsFillSymbolLayerV2
     Qt::PenStyle mBorderStyle;
     double mBorderWidth;
     QPen mPen;
+    QPen mSelPen;
 
     QPointF mOffset;
 };
diff --git a/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp b/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp
index 578eb37..c4b8ebf 100644
--- a/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp
+++ b/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp
@@ -48,12 +48,13 @@ static QPointF _rotatedOffset( const QPointF& offset, double angle )
 
 //////
 
-QgsSimpleMarkerSymbolLayerV2::QgsSimpleMarkerSymbolLayerV2( QString name, QColor color, QColor borderColor, double size, double angle )
+QgsSimpleMarkerSymbolLayerV2::QgsSimpleMarkerSymbolLayerV2( QString name, QColor color, Qt::BrushStyle style, QColor borderColor, double size, double angle )
 {
   mName = name;
   mColor = color;
   mBorderColor = borderColor;
   mSize = size;
+  mBrushStyle = style;
   mAngle = angle;
   mOffset = QPointF( 0, 0 );
 }
@@ -62,6 +63,7 @@ QgsSymbolLayerV2* QgsSimpleMarkerSymbolLayerV2::create( const QgsStringMap& prop
 {
   QString name = DEFAULT_SIMPLEMARKER_NAME;
   QColor color = DEFAULT_SIMPLEMARKER_COLOR;
+  Qt::BrushStyle style = DEFAULT_SIMPLEMARKER_STYLE;
   QColor borderColor = DEFAULT_SIMPLEMARKER_BORDERCOLOR;
   double size = DEFAULT_SIMPLEMARKER_SIZE;
   double angle = DEFAULT_SIMPLEMARKER_ANGLE;
@@ -70,6 +72,8 @@ QgsSymbolLayerV2* QgsSimpleMarkerSymbolLayerV2::create( const QgsStringMap& prop
     name = props["name"];
   if ( props.contains( "color" ) )
     color = QgsSymbolLayerV2Utils::decodeColor( props["color"] );
+  if ( props.contains( "style" ) )
+    style = QgsSymbolLayerV2Utils::decodeBrushStyle( props["style"] );
   if ( props.contains( "color_border" ) )
     borderColor = QgsSymbolLayerV2Utils::decodeColor( props["color_border"] );
   if ( props.contains( "size" ) )
@@ -77,7 +81,7 @@ QgsSymbolLayerV2* QgsSimpleMarkerSymbolLayerV2::create( const QgsStringMap& prop
   if ( props.contains( "angle" ) )
     angle = props["angle"].toDouble();
 
-  QgsSimpleMarkerSymbolLayerV2* m = new QgsSimpleMarkerSymbolLayerV2( name, color, borderColor, size, angle );
+  QgsSimpleMarkerSymbolLayerV2* m = new QgsSimpleMarkerSymbolLayerV2( name, color, style, borderColor, size, angle );
   if ( props.contains( "offset" ) )
     m->setOffset( QgsSymbolLayerV2Utils::decodePoint( props["offset"] ) );
   return m;
@@ -93,26 +97,35 @@ void QgsSimpleMarkerSymbolLayerV2::startRender( QgsSymbolV2RenderContext& contex
 {
   QColor brushColor = mColor;
   QColor penColor = mBorderColor;
+  QColor selColor = context.selectionColor();
+  QColor selPenColor = selColor == mColor ? selColor : mBorderColor;
   if ( context.alpha() < 1 )
   {
-    penColor.setAlphaF( context.alpha() );
     brushColor.setAlphaF( context.alpha() );
+	penColor.setAlphaF( context.alpha() );
+    if ( ! selectionIsOpaque ) 
+	{
+		selColor.setAlphaF( context.alpha() );
+		// N.B. this doesn't work right if transparency is set to 100%.  But then why would you use 100% transparency?
+		selPenColor.setAlphaF( context.alpha() );
+	}
   }
-  mBrush = QBrush( brushColor );
+   // Alister - Sunil used `QBrush ( mColor, mBrushStyle )` whereas previously it was `QBrush( brushColor)`
+  // What are the implications of using brushColor vs using mColor?
+  mBrush = QBrush( brushColor, mBrushStyle );
   mPen = QPen( penColor );
+  mSelBrush = QBrush( selColor );
+  mSelPen = QPen( selPenColor );
   mPen.setWidthF( context.outputLineWidth( mPen.widthF() ) );
 
-  QColor selBrushColor = context.selectionColor();
-  QColor selPenColor = selBrushColor == mColor ? selBrushColor : mBorderColor;
-  if ( context.alpha() < 1 )
-  {
-    selBrushColor.setAlphaF( context.alpha() );
-    selPenColor.setAlphaF( context.alpha() );
-  }
-  mSelBrush = QBrush( selBrushColor );
-  mSelPen = QPen( selPenColor );
   mSelPen.setWidthF( context.outputLineWidth( mPen.widthF() ) );
 
+  // N.B. unless a "selection line colour" is implemented in addition to the "selection colour" option
+  // this would mean symbols with "no fill" look the same whether or not they are selected...
+  // except, at the moment it doesn't work right if fill style is set to "no fill" :)
+  // e.g. if the symbol is a circle, it and the square area it fits in are filled with the selection colour
+  if ( selectFillStyle )  mSelBrush.setStyle( mBrushStyle );
+
   bool hasDataDefinedRotation = context.renderHints() & QgsSymbolV2::DataDefinedRotation;
   bool hasDataDefinedSize = context.renderHints() & QgsSymbolV2::DataDefinedSizeScale;
 
@@ -131,7 +144,7 @@ void QgsSimpleMarkerSymbolLayerV2::startRender( QgsSymbolV2RenderContext& contex
       // For these set the selected border color to the selected color
 
       if ( mName != "circle" )
-        mSelPen.setColor( selBrushColor );
+        mSelPen.setColor( selColor );
     }
     else
     {
@@ -428,6 +441,7 @@ QgsStringMap QgsSimpleMarkerSymbolLayerV2::properties() const
   QgsStringMap map;
   map["name"] = mName;
   map["color"] = QgsSymbolLayerV2Utils::encodeColor( mColor );
+  map["style"] = QgsSymbolLayerV2Utils::encodeBrushStyle( mBrushStyle );
   map["color_border"] = QgsSymbolLayerV2Utils::encodeColor( mBorderColor );
   map["size"] = QString::number( mSize );
   map["angle"] = QString::number( mAngle );
@@ -437,7 +451,7 @@ QgsStringMap QgsSimpleMarkerSymbolLayerV2::properties() const
 
 QgsSymbolLayerV2* QgsSimpleMarkerSymbolLayerV2::clone() const
 {
-  QgsSimpleMarkerSymbolLayerV2* m = new QgsSimpleMarkerSymbolLayerV2( mName, mColor, mBorderColor, mSize, mAngle );
+  QgsSimpleMarkerSymbolLayerV2* m = new QgsSimpleMarkerSymbolLayerV2( mName, mColor, mBrushStyle,mBorderColor, mSize, mAngle );
   m->setOffset( mOffset );
   return m;
 }
@@ -496,8 +510,7 @@ QgsSymbolLayerV2* QgsSimpleMarkerSymbolLayerV2::createFromSld( QDomElement &elem
   QPointF offset;
   QgsSymbolLayerV2Utils::displacementFromSldElement( graphicElem, offset );
 
-  QgsMarkerSymbolLayerV2 *m = new QgsSimpleMarkerSymbolLayerV2( name, color, borderColor, size );
-  m->setAngle( angle );
+  QgsMarkerSymbolLayerV2 *m = new QgsSimpleMarkerSymbolLayerV2( name, color, DEFAULT_SIMPLEMARKER_STYLE, borderColor, size);
   m->setOffset( offset );
   return m;
 }
diff --git a/src/core/symbology-ng/qgsmarkersymbollayerv2.h b/src/core/symbology-ng/qgsmarkersymbollayerv2.h
index 74ab98e..b191e76 100644
--- a/src/core/symbology-ng/qgsmarkersymbollayerv2.h
+++ b/src/core/symbology-ng/qgsmarkersymbollayerv2.h
@@ -20,6 +20,7 @@
 
 #define DEFAULT_SIMPLEMARKER_NAME         "circle"
 #define DEFAULT_SIMPLEMARKER_COLOR        QColor(255,0,0)
+#define DEFAULT_SIMPLEMARKER_STYLE        Qt::SolidPattern
 #define DEFAULT_SIMPLEMARKER_BORDERCOLOR  QColor(0,0,0)
 #define DEFAULT_SIMPLEMARKER_SIZE         DEFAULT_POINT_SIZE
 #define DEFAULT_SIMPLEMARKER_ANGLE        0
@@ -35,6 +36,7 @@ class CORE_EXPORT QgsSimpleMarkerSymbolLayerV2 : public QgsMarkerSymbolLayerV2
   public:
     QgsSimpleMarkerSymbolLayerV2( QString name = DEFAULT_SIMPLEMARKER_NAME,
                                   QColor color = DEFAULT_SIMPLEMARKER_COLOR,
+                                  Qt::BrushStyle style = DEFAULT_SIMPLEMARKER_STYLE,
                                   QColor borderColor = DEFAULT_SIMPLEMARKER_BORDERCOLOR,
                                   double size = DEFAULT_SIMPLEMARKER_SIZE,
                                   double angle = DEFAULT_SIMPLEMARKER_ANGLE );
@@ -58,6 +60,9 @@ class CORE_EXPORT QgsSimpleMarkerSymbolLayerV2 : public QgsMarkerSymbolLayerV2
 
     QgsSymbolLayerV2* clone() const;
 
+	Qt::BrushStyle brushStyle() const { return mBrushStyle; }
+    void setBrushStyle( Qt::BrushStyle style ) { mBrushStyle = style; }
+
     void writeSldMarker( QDomDocument &doc, QDomElement &element, QgsStringMap props ) const;
 
     QString name() const { return mName; }
@@ -81,6 +86,7 @@ class CORE_EXPORT QgsSimpleMarkerSymbolLayerV2 : public QgsMarkerSymbolLayerV2
     QPolygonF mPolygon;
     QPainterPath mPath;
     QString mName;
+	Qt::BrushStyle mBrushStyle;
     QImage mCache;
     QPen mSelPen;
     QBrush mSelBrush;
diff --git a/src/core/symbology-ng/qgssymbologyv2conversion.cpp b/src/core/symbology-ng/qgssymbologyv2conversion.cpp
index a5218da..ac45aff 100644
--- a/src/core/symbology-ng/qgssymbologyv2conversion.cpp
+++ b/src/core/symbology-ng/qgssymbologyv2conversion.cpp
@@ -46,7 +46,8 @@ QgsSymbolV2* QgsSymbologyV2Conversion::symbolV1toV2( const QgsSymbol* s )
         QColor color = s->fillColor();
         QColor borderColor = s->color();
         QString name = symbolName.mid( 5 );
-        sl = new QgsSimpleMarkerSymbolLayerV2( name, color, borderColor, size, angle );
+		Qt::BrushStyle brushStyle = s->brush().style();
+		sl = new QgsSimpleMarkerSymbolLayerV2( name, color, brushStyle, borderColor, size, angle );
       }
       else
       {
diff --git a/src/gui/symbology-ng/qgssymbollayerv2widget.cpp b/src/gui/symbology-ng/qgssymbollayerv2widget.cpp
index de16c02..acfe314 100644
--- a/src/gui/symbology-ng/qgssymbollayerv2widget.cpp
+++ b/src/gui/symbology-ng/qgssymbollayerv2widget.cpp
@@ -192,9 +192,10 @@ QgsSimpleMarkerSymbolLayerV2Widget::QgsSimpleMarkerSymbolLayerV2Widget( const Qg
   names << "circle" << "rectangle" << "diamond" << "pentagon" << "cross" << "cross2" << "triangle"
   << "equilateral_triangle" << "star" << "regular_star" << "arrow" << "line" << "arrowhead" << "filled_arrowhead";
   double markerSize = DEFAULT_POINT_SIZE * 2;
+  Qt::BrushStyle brushStyle =   DEFAULT_SIMPLEFILL_STYLE ;
   for ( int i = 0; i < names.count(); ++i )
   {
-    QgsSimpleMarkerSymbolLayerV2* lyr = new QgsSimpleMarkerSymbolLayerV2( names[i], QColor( 200, 200, 200 ), QColor( 0, 0, 0 ), markerSize );
+    QgsSimpleMarkerSymbolLayerV2* lyr = new QgsSimpleMarkerSymbolLayerV2( names[i], QColor( 200, 200, 200 ), brushStyle, QColor( 0, 0, 0 ), markerSize );
     QIcon icon = QgsSymbolLayerV2Utils::symbolLayerPreviewIcon( lyr, QgsSymbolV2::MM, size );
     QListWidgetItem* item = new QListWidgetItem( icon, QString(), lstNames );
     item->setData( Qt::UserRole, names[i] );
@@ -206,6 +207,7 @@ QgsSimpleMarkerSymbolLayerV2Widget::QgsSimpleMarkerSymbolLayerV2Widget( const Qg
   connect( btnChangeColorFill, SIGNAL( clicked() ), this, SLOT( setColorFill() ) );
   connect( spinSize, SIGNAL( valueChanged( double ) ), this, SLOT( setSize() ) );
   connect( spinAngle, SIGNAL( valueChanged( double ) ), this, SLOT( setAngle() ) );
+   connect( cboFillStyleMarker,SIGNAL( currentIndexChanged( int ) ), this, SLOT( setBrushStyle() )) ;
   connect( spinOffsetX, SIGNAL( valueChanged( double ) ), this, SLOT( setOffset() ) );
   connect( spinOffsetY, SIGNAL( valueChanged( double ) ), this, SLOT( setOffset() ) );
 }
@@ -232,6 +234,7 @@ void QgsSimpleMarkerSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer
   btnChangeColorFill->setColor( mLayer->color() );
   spinSize->setValue( mLayer->size() );
   spinAngle->setValue( mLayer->angle() );
+  cboFillStyleMarker->setBrushStyle( mLayer->brushStyle() );
 
   // without blocking signals the value gets changed because of slot setOffset()
   spinOffsetX->blockSignals( true );
@@ -287,6 +290,12 @@ void QgsSimpleMarkerSymbolLayerV2Widget::setColorFill()
   emit changed();
 }
 
+void QgsSimpleMarkerSymbolLayerV2Widget::setBrushStyle()
+{
+  mLayer->setBrushStyle( cboFillStyleMarker->brushStyle() );
+  emit changed();
+}
+
 void QgsSimpleMarkerSymbolLayerV2Widget::setSize()
 {
   mLayer->setSize( spinSize->value() );
diff --git a/src/gui/symbology-ng/qgssymbollayerv2widget.h b/src/gui/symbology-ng/qgssymbollayerv2widget.h
index db7abff..fb99921 100644
--- a/src/gui/symbology-ng/qgssymbollayerv2widget.h
+++ b/src/gui/symbology-ng/qgssymbollayerv2widget.h
@@ -19,6 +19,7 @@
 
 #include <QWidget>
 
+#define DEFAULT_SIMPLEFILL_STYLE        Qt::SolidPattern
 class QgsSymbolLayerV2;
 class QgsVectorLayer;
 
@@ -99,6 +100,7 @@ class GUI_EXPORT QgsSimpleMarkerSymbolLayerV2Widget : public QgsSymbolLayerV2Wid
     void setName();
     void setColorBorder();
     void setColorFill();
+	void setBrushStyle();
     void setSize();
     void setAngle();
     void setOffset();
diff --git a/src/ui/symbollayer/widget_simplemarker.ui b/src/ui/symbollayer/widget_simplemarker.ui
index b0c7984..0b6df57 100644
--- a/src/ui/symbollayer/widget_simplemarker.ui
+++ b/src/ui/symbollayer/widget_simplemarker.ui
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>394</width>
-    <height>275</height>
+    <height>305</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -63,21 +63,21 @@
        </property>
       </widget>
      </item>
-     <item row="2" column="0">
+     <item row="3" column="0">
       <widget class="QLabel" name="label_3">
        <property name="text">
         <string>Size</string>
        </property>
       </widget>
      </item>
-     <item row="3" column="0">
+     <item row="5" column="0">
       <widget class="QLabel" name="label_4">
        <property name="text">
         <string>Angle</string>
        </property>
       </widget>
      </item>
-     <item row="3" column="1">
+     <item row="5" column="1">
       <widget class="QDoubleSpinBox" name="spinAngle">
        <property name="decimals">
         <number>2</number>
@@ -90,14 +90,14 @@
        </property>
       </widget>
      </item>
-     <item row="4" column="0">
+     <item row="6" column="0">
       <widget class="QLabel" name="label_5">
        <property name="text">
         <string>Offset X,Y</string>
        </property>
       </widget>
      </item>
-     <item row="4" column="1">
+     <item row="6" column="1">
       <layout class="QHBoxLayout" name="horizontalLayout">
        <item>
         <widget class="QDoubleSpinBox" name="spinOffsetX">
@@ -121,7 +121,7 @@
        </item>
       </layout>
      </item>
-     <item row="2" column="1">
+     <item row="3" column="1">
       <widget class="QDoubleSpinBox" name="spinSize">
        <property name="decimals">
         <number>5</number>
@@ -134,6 +134,16 @@
        </property>
       </widget>
      </item>
+     <item row="2" column="0">
+      <widget class="QLabel" name="label_6">
+       <property name="text">
+        <string>Fill Style</string>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1">
+      <widget class="QgsBrushStyleComboBox" name="cboFillStyleMarker"/>
+     </item>
     </layout>
    </item>
    <item>
@@ -159,9 +169,6 @@
      <property name="flow">
       <enum>QListView::LeftToRight</enum>
      </property>
-     <property name="resizeMode">
-      <enum>QListView::Adjust</enum>
-     </property>
      <property name="spacing">
       <number>4</number>
      </property>
@@ -199,6 +206,11 @@
  </widget>
  <customwidgets>
   <customwidget>
+   <class>Q3ComboBox</class>
+   <extends>QWidget</extends>
+   <header>Qt3Support/Q3ComboBox</header>
+  </customwidget>
+   <customwidget>   
    <class>QgsColorButtonV2</class>
    <extends>QPushButton</extends>
    <header>qgscolorbutton.h</header>
