diff --git a/timeseriesviewer/mapvisualization.py b/timeseriesviewer/mapvisualization.py
index f46ba9ac76648bb409fa148949eda27098e7e5dc..61cc67ab8a25ff81bb2356e9676f139b5d112887 100644
--- a/timeseriesviewer/mapvisualization.py
+++ b/timeseriesviewer/mapvisualization.py
@@ -1083,6 +1083,10 @@ class MapView(QObject):
     def setVectorLayerStyle(self, *args):
         if isinstance(self.mVectorLayer, QgsVectorLayer):
             d = QgsRendererPropertiesDialog(self.mVectorLayer, QgsStyle.defaultStyle())
+
+            mc = self.mapCanvases()
+            if len(mc) > 0:
+                d.setMapCanvas(mc[0])
             d.exec_()
             s = ""
 
@@ -1737,6 +1741,8 @@ class DatumView(QObject):
         mapCanvas.setTSD(self.TSD)
         self.registerMapCanvas(mapView, mapCanvas)
 
+
+
         # register MapCanvas on MV level
         mapView.registerMapCanvas(self.mSensor, mapCanvas)
         # register MapCanvas on STV level
diff --git a/timeseriesviewer/plotstyling.py b/timeseriesviewer/plotstyling.py
index 8ae9e3190ae9e8cdef6ee333b6d1fcfd2c240296..740002242a1da5ca02d7f8922ec5a5bd6e6f1277 100644
--- a/timeseriesviewer/plotstyling.py
+++ b/timeseriesviewer/plotstyling.py
@@ -46,6 +46,13 @@ MARKERSYMBOLS = [Option('o', u'Circle'),
                  Option(None, u'No Symbol')
                  ]
 
+MARKERSYMBOLS2QGIS_SYMBOLS = dict()
+for o in MARKERSYMBOLS:
+    name = o.name()
+    name = name.replace(' ','_')
+    name = name.lower()
+    MARKERSYMBOLS2QGIS_SYMBOLS[o.value()] = name
+
 PENSTYLES = [Option(Qt.SolidLine, '___'),
              Option(Qt.DashLine, '_ _ _'),
              Option(Qt.DotLine, '. . .'),
diff --git a/timeseriesviewer/spectrallibraries.py b/timeseriesviewer/spectrallibraries.py
index c43807b26bdcfa471ae6c727a7080fb82bbe5e20..3a3b0203c88984c42333a1c788f0033e06c9de7f 100644
--- a/timeseriesviewer/spectrallibraries.py
+++ b/timeseriesviewer/spectrallibraries.py
@@ -24,6 +24,7 @@ import os, re, tempfile, pickle, copy, shutil, locale
 from collections import OrderedDict
 from qgis.core import *
 from qgis.gui import *
+from qgis.utils import qgsfunction
 from qgis.PyQt.QtCore import *
 from qgis.PyQt.QtGui import *
 from qgis.PyQt.QtWidgets import *
@@ -39,7 +40,7 @@ from osgeo import gdal, gdal_array
 from timeseriesviewer.utils import *
 from timeseriesviewer.virtualrasters import *
 from timeseriesviewer.models import *
-from timeseriesviewer.plotstyling import PlotStyle, PlotStyleDialog
+from timeseriesviewer.plotstyling import PlotStyle, PlotStyleDialog, MARKERSYMBOLS2QGIS_SYMBOLS
 import timeseriesviewer.mimedata as mimedata
 
 FILTERS = 'ENVI Spectral Library (*.esl *.sli);;CSV Table (*.csv)'
@@ -76,6 +77,50 @@ def gdalDataset(pathOrDataset, eAccess=gdal.GA_ReadOnly):
     return pathOrDataset
 
 
+
+@qgsfunction(0, "Spectral Libraries")
+def plotStyleSymbolFillColor(values, feature, parent):
+    if isinstance(feature, QgsFeature):
+        i = feature.fieldNameIndex(HIDDEN_ATTRIBUTE_PREFIX+'style')
+        if i >= 0:
+            style = pickle.loads(feature.attribute(i))
+            if isinstance(style, PlotStyle):
+                r,g,b,a = style.markerBrush.color().getRgb()
+                return '{},{},{},{}'.format(r,g,b, a)
+
+    return None
+
+@qgsfunction(0, "Spectral Libraries")
+def plotStyleSymbol(values, feature, parent):
+    if isinstance(feature, QgsFeature):
+        i = feature.fieldNameIndex(HIDDEN_ATTRIBUTE_PREFIX+'style')
+        if i >= 0:
+            style = pickle.loads(feature.attribute(i))
+            if isinstance(style, PlotStyle):
+                symbol = style.markerSymbol
+
+                qgisSymbolString =  MARKERSYMBOLS2QGIS_SYMBOLS.get(symbol)
+                if isinstance(qgisSymbolString, str):
+                    return qgisSymbolString
+
+    return None
+
+@qgsfunction(0, "Spectral Libraries")
+def plotStyleSymbolSize(values, feature, parent):
+    if isinstance(feature, QgsFeature):
+        i = feature.fieldNameIndex(HIDDEN_ATTRIBUTE_PREFIX+'style')
+        if i >= 0:
+            style = pickle.loads(feature.attribute(i))
+            if isinstance(style, PlotStyle):
+                return style.markerSize
+    return None
+
+
+QgsExpression.registerFunction(plotStyleSymbolFillColor)
+QgsExpression.registerFunction(plotStyleSymbol)
+QgsExpression.registerFunction(plotStyleSymbolSize)
+
+
 #Lookup table for ENVI IDL DataTypes to GDAL Data Types
 LUT_IDL2GDAL = {1:gdal.GDT_Byte,
                 12:gdal.GDT_UInt16,
@@ -350,10 +395,15 @@ class SpectralLibraryTableView(QgsAttributeTableView):
         assert isinstance(menu, QMenu)
         assert isinstance(index, QModelIndex)
 
-        featureIDs = self.mSelectionManager.selectedFeatureIds()
-        featureIndices = self.fidsToIndices(featureIDs)
-        if not isinstance(featureIDs, list):
-            s = ""
+        featureIDs = self.spectralLibrary().selectedFeatureIds()
+
+        if len(featureIDs) == 0 and index.isValid():
+            if isinstance(self.model(), QgsAttributeTableFilterModel):
+                index = self.model().mapToSource(index)
+                if index.isValid():
+                    featureIDs.append(self.model().sourceModel().feature(index).id())
+            elif isinstance(self.model(), QgsAttributeTableFilterModel):
+                featureIDs.append(self.model().feature(index).id())
 
 
 
@@ -434,7 +484,8 @@ class SpectralLibraryTableView(QgsAttributeTableView):
         refProfile = profiles[0]
         styleDefault = refProfile.style()
         refStyle = PlotStyleDialog.getPlotStyle(plotStyle=styleDefault)
-        refProfile.setStyle(refStyle)
+        if isinstance(refStyle, PlotStyle):
+            refProfile.setStyle(refStyle)
 
         iStyle = speclib.fields().indexFromName(HIDDEN_ATTRIBUTE_PREFIX+'style')
         assert iStyle >= 0