diff -up gnome-applets-2.20.0/libgweather/weather.h.icon-theme gnome-applets-2.20.0/libgweather/weather.h
--- gnome-applets-2.20.0/libgweather/weather.h.icon-theme	2007-10-21 13:50:45.000000000 -0400
+++ gnome-applets-2.20.0/libgweather/weather.h	2007-10-21 13:50:53.000000000 -0400
@@ -158,6 +158,7 @@ void			_weather_info_get_pixbuf	(Weather
 #define weather_info_get_pixbuf_mini(info,pixbuf) _weather_info_get_pixbuf((info), TRUE, (pixbuf))
 #define weather_info_get_pixbuf(info,pixbuf) _weather_info_get_pixbuf((info), FALSE, (pixbuf))
 
+const gchar *		weather_info_get_icon_name	(WeatherInfo *info);
 gint			weather_info_next_sun_event	(WeatherInfo *info);
 G_END_DECLS
 
diff -up gnome-applets-2.20.0/libgweather/weather.c.icon-theme gnome-applets-2.20.0/libgweather/weather.c
--- gnome-applets-2.20.0/libgweather/weather.c.icon-theme	2007-10-21 13:49:42.000000000 -0400
+++ gnome-applets-2.20.0/libgweather/weather.c	2007-10-21 13:49:46.000000000 -0400
@@ -1003,86 +1003,39 @@ gchar *weather_info_get_weather_summary 
     return g_strdup_printf ("%s: %s", weather_info_get_location_name (info), buf);
 }
 
-
-static GdkPixbuf **weather_pixbufs_mini = NULL;
-static GdkPixbuf **weather_pixbufs = NULL;
-
 enum
 {
-	PIX_UNKNOWN,
-	PIX_SUN,
-	PIX_SUNCLOUD,
-	PIX_CLOUD,
-	PIX_RAIN,
-	PIX_TSTORM,
-	PIX_SNOW,
-	PIX_FOG,
-	PIX_MOON,
-	PIX_MOONCLOUD,
+        PIX_UNKNOWN,
+        PIX_SUN,
+        PIX_SUNCLOUD,
+        PIX_CLOUD,
+        PIX_RAIN,
+        PIX_TSTORM,
+        PIX_SNOW,
+        PIX_FOG,
+        PIX_MOON,
+        PIX_MOONCLOUD,
 
-	NUM_PIX
+        NUM_PIX
 };
 
-#if 0
-static void
-xpm_to_pixmap (char **xpm_data, GdkPixmap **pixmap, GdkBitmap **mask)
+const gchar *
+weather_info_get_icon_name (WeatherInfo *info)
 {
-	GdkPixbuf *pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)xpm_data);
-
-	*pixmap = NULL;
-	*mask = NULL;
-
-	if (pixbuf != NULL) {
-		gdk_pixbuf_render_pixmap_and_mask (pixbuf, pixmap, mask, 127);
-
-		gdk_pixbuf_unref (pixbuf);
-	}
-}
-#endif
-
-static void init_pixbufs (void)
-{
-    static gboolean initialized = FALSE;
-    GtkIconTheme *icon_theme;
-    static char *icons[NUM_PIX] = {
-      "stock_unknown",
-      "stock_weather-sunny",
-      "stock_weather-few-clouds",
-      "stock_weather-cloudy",
-      "stock_weather-showers",
-      "stock_weather-storm",
-      "stock_weather-snow",
-      "stock_weather-fog",
-      "stock_weather-night-clear",
-      "stock_weather-night-few-clouds"
+    static char *names[NUM_PIX] = {
+	NULL,
+	"weather-clear",
+	"weather-few-clouds",
+	"weather-overcast",
+	"weather-showers",
+	"weather-storm",
+	"weather-snow",
+	"weather-fog",
+	"weather-clear-night",
+	"weather-few-clouds-night"
     };
-    int idx;
-    
-    if (initialized)
-       return;
-    initialized = TRUE;
-
-    icon_theme = gtk_icon_theme_get_default ();
-
-    weather_pixbufs_mini = g_new(GdkPixbuf *, NUM_PIX);
-    weather_pixbufs = g_new(GdkPixbuf *, NUM_PIX);
-
-    for (idx = 0; idx < NUM_PIX; idx++) {
-        weather_pixbufs_mini[idx] = gtk_icon_theme_load_icon (icon_theme, icons[idx], 16, 0, NULL);
-        weather_pixbufs[idx] = gtk_icon_theme_load_icon (icon_theme, icons[idx], 48, 0, NULL);
-    }
-}
-
-void _weather_info_get_pixbuf (WeatherInfo *info, gboolean mini, GdkPixbuf **pixbuf)
-{
-    GdkPixbuf **pixbufs;
     gint idx = -1;
 
-    g_return_if_fail(pixbuf != NULL);
-
-    init_pixbufs();
-    pixbufs = mini ? weather_pixbufs_mini : weather_pixbufs;
-
     if (!info || !info->valid) {
         idx = PIX_UNKNOWN;
     } else {
@@ -1183,5 +1136,22 @@ void _weather_info_get_pixbuf (WeatherIn
         }
     }
 
-    *pixbuf = pixbufs[idx];
+    return names[idx];
 }
+
+void 
+_weather_info_get_pixbuf (WeatherInfo *info, gboolean mini, GdkPixbuf **pixbuf)
+{
+    GtkIconTheme *theme;
+    const gchar *name;
+    gint size;
+
+    g_return_if_fail (pixbuf != NULL);
+
+    theme = gtk_icon_theme_get_default ();
+    name = weather_info_get_icon_name (info);
+    size = mini ? 16 : 48;
+   
+    *pixbuf = gtk_icon_theme_load_icon (theme, name, size, 0, NULL);
+}
+
