Keep track of theme filename within THEME_FILE.

diff --git a/dlls/uxtheme/msstyles.c b/dlls/uxtheme/msstyles.c
index 95ad222..fe106c8 100644
--- a/dlls/uxtheme/msstyles.c
+++ b/dlls/uxtheme/msstyles.c
@@ -174,6 +174,9 @@
 
     *tf = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(THEME_FILE));
     (*tf)->hTheme = hTheme;
+    
+    GetFullPathNameW(lpThemeFile, MAX_PATH, (*tf)->szThemeFile, NULL);
+    
     (*tf)->pszAvailColors = pszColors;
     (*tf)->pszAvailSizes = pszSizes;
     (*tf)->pszSelectedColor = pszSelectedColor;
diff --git a/dlls/uxtheme/msstyles.h b/dlls/uxtheme/msstyles.h
index f6ef348..53ef348 100644
--- a/dlls/uxtheme/msstyles.h
+++ b/dlls/uxtheme/msstyles.h
@@ -59,6 +59,7 @@
 typedef struct _THEME_FILE {
     DWORD dwRefCount;
     HMODULE hTheme;
+    WCHAR szThemeFile[MAX_PATH];
     LPWSTR pszAvailColors;
     LPWSTR pszAvailSizes;
 
diff --git a/dlls/uxtheme/system.c b/dlls/uxtheme/system.c
index 6bd3b78..531c1f8 100644
--- a/dlls/uxtheme/system.c
+++ b/dlls/uxtheme/system.c
@@ -152,7 +152,7 @@
         return hr;
     if(tf) {
         bThemeActive = TRUE;
-        GetModuleFileNameW(tf->hTheme, szCurrentTheme, sizeof(szCurrentTheme)/sizeof(szCurrentTheme[0]));
+        lstrcpynW(szCurrentTheme, tf->szThemeFile, sizeof(szCurrentTheme)/sizeof(szCurrentTheme[0]));
         lstrcpynW(szCurrentColor, tf->pszSelectedColor, sizeof(szCurrentColor)/sizeof(szCurrentColor[0]));
         lstrcpynW(szCurrentSize, tf->pszSelectedSize, sizeof(szCurrentSize)/sizeof(szCurrentSize[0]));
     }