diff --git a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CSSPropertiesContentProvider.java b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CSSPropertiesContentProvider.java
index 2803c9d..8cc7728 100644
--- a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CSSPropertiesContentProvider.java
+++ b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CSSPropertiesContentProvider.java
@@ -18,7 +18,6 @@
 import org.eclipse.e4.ui.css.core.dom.CSSStylableElement;
 import org.eclipse.e4.ui.css.core.dom.properties.ICSSPropertyHandler;
 import org.eclipse.e4.ui.css.core.engine.CSSEngine;
-import org.eclipse.e4.ui.css.swt.dom.WidgetElement;
 import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.widgets.Widget;
@@ -36,9 +35,9 @@
     public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
         if (newInput instanceof CSSStylableElement) {
             this.input = (CSSStylableElement) newInput;
-            this.cssEngine = WidgetElement.getEngine((Widget) input.getNativeWidget());
+            this.cssEngine = CssSpyDialog.getCSSEngine((Widget) input.getNativeWidget());
         } else if (newInput instanceof Widget) {
-            this.cssEngine = WidgetElement.getEngine((Widget) newInput);
+            this.cssEngine = CssSpyDialog.getCSSEngine((Widget) newInput);
 			this.input = (CSSStylableElement) cssEngine.getElement(newInput);
         }
     }
diff --git a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CssSpyDialog.java b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CssSpyDialog.java
index cff7089..fb59f09 100644
--- a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CssSpyDialog.java
+++ b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CssSpyDialog.java
@@ -17,6 +17,7 @@
 import org.eclipse.e4.ui.css.core.dom.CSSStylableElement;
 import org.eclipse.e4.ui.css.core.engine.CSSEngine;
 import org.eclipse.e4.ui.css.swt.dom.WidgetElement;
+import org.eclipse.e4.ui.css.swt.engine.CSSSWTEngineImpl;
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.dialogs.MessageDialog;
@@ -81,22 +82,29 @@
 	public static CSSStylableElement getCSSElement(Object o) {
 		if (o instanceof CSSStylableElement) {
 			return (CSSStylableElement) o;
-		} else if (o instanceof Widget) {
-			CSSEngine engine = WidgetElement.getEngine((Widget) o);
-			return (CSSStylableElement) engine.getElement(o);
+        } else {
+            CSSEngine engine = getCSSEngine(o);
+            if (engine != null) {
+                return (CSSStylableElement) engine.getElement(o);
+            }
 		}
 		return null;
 	}
 
 	/** @return the CSS engine governing the argument, or null if none */
 	public static CSSEngine getCSSEngine(Object o) {
+        CSSEngine engine = null;
 		if (o instanceof CSSStylableElement) {
 			CSSStylableElement element = (CSSStylableElement) o;
-			return WidgetElement.getEngine((Widget) element.getNativeWidget());
-		} else if (o instanceof Widget) {
-			return WidgetElement.getEngine((Widget) o);
+            engine = WidgetElement.getEngine((Widget) element.getNativeWidget());
+        }
+        if (engine == null && o instanceof Widget) {
+            engine = WidgetElement.getEngine((Widget) o);
+        }
+        if (engine == null && Display.getCurrent() != null) {
+            engine = new CSSSWTEngineImpl(Display.getCurrent());
 		}
-		return null;
+        return engine;
 	}
 
 	private Display display;
@@ -173,7 +181,7 @@
 		}
 		shown = current;
 
-		CSSEngine engine = WidgetElement.getEngine(shown);
+        CSSEngine engine = getCSSEngine(shown);
 		CSSStylableElement element = (CSSStylableElement) engine
 				.getElement(shown);
 		if (element == null) {
@@ -646,7 +654,7 @@
 			return;
 		}
 
-		CSSEngine engine = WidgetElement.getEngine(shown);
+        CSSEngine engine = getCSSEngine(shown);
 		try {
 			SelectorList selectors = engine.parseSelectors(text);
 			processCSSSearch(text, null, engine, selectors, element);
