diff -urN plymouth-lite-0.6.0/ply-frame-buffer.c plymouth-lite-0.6.0.change/ply-frame-buffer.c
--- plymouth-lite-0.6.0/ply-frame-buffer.c	2009-02-19 19:14:24.000000000 +0800
+++ plymouth-lite-0.6.0.change/ply-frame-buffer.c	2009-06-13 17:44:05.000000000 +0800
@@ -47,41 +47,6 @@
 #define PLY_FRAME_BUFFER_DEFAULT_FB_DEVICE_NAME "/dev/fb0"
 #endif
 
-struct _ply_frame_buffer
-{
-  char *device_name;
-  int   device_fd;
-
-  char *map_address;
-  size_t size;
-
-  uint32_t *shadow_buffer;
-
-  uint32_t red_bit_position;
-  uint32_t green_bit_position;
-  uint32_t blue_bit_position;
-  uint32_t alpha_bit_position;
-
-  uint32_t bits_for_red;
-  uint32_t bits_for_green;
-  uint32_t bits_for_blue;
-  uint32_t bits_for_alpha;
-
-  int32_t dither_red;
-  int32_t dither_green;
-  int32_t dither_blue;
-
-  unsigned int bytes_per_pixel;
-  unsigned int row_stride;
-
-  ply_frame_buffer_area_t area;
-  ply_frame_buffer_area_t area_to_flush;
-
-  void (*flush)(ply_frame_buffer_t *buffer);
-
-  int pause_count;
-};
-
 static bool ply_frame_buffer_open_device (ply_frame_buffer_t  *buffer);
 static void ply_frame_buffer_close_device (ply_frame_buffer_t *buffer);
 static bool ply_frame_buffer_query_device (ply_frame_buffer_t *buffer);
diff -urN plymouth-lite-0.6.0/ply-frame-buffer.h plymouth-lite-0.6.0.change/ply-frame-buffer.h
--- plymouth-lite-0.6.0/ply-frame-buffer.h	2009-02-19 17:35:54.000000000 +0800
+++ plymouth-lite-0.6.0.change/ply-frame-buffer.h	2009-06-13 17:31:42.000000000 +0800
@@ -38,6 +38,41 @@
   unsigned long height;
 };
 
+struct _ply_frame_buffer
+{
+  char *device_name;
+  int   device_fd;
+
+  char *map_address;
+  size_t size;
+
+  uint32_t *shadow_buffer;
+
+  uint32_t red_bit_position;
+  uint32_t green_bit_position;
+  uint32_t blue_bit_position;
+  uint32_t alpha_bit_position;
+
+  uint32_t bits_for_red;
+  uint32_t bits_for_green;
+  uint32_t bits_for_blue;
+  uint32_t bits_for_alpha;
+
+  int32_t dither_red;
+  int32_t dither_green;
+  int32_t dither_blue;
+
+  unsigned int bytes_per_pixel;
+  unsigned int row_stride;
+
+  ply_frame_buffer_area_t area;
+  ply_frame_buffer_area_t area_to_flush;
+
+  void (*flush)(ply_frame_buffer_t *buffer);
+
+  int pause_count;
+};
+
 #define PLY_FRAME_BUFFER_COLOR_TO_PIXEL_VALUE(r,g,b,a)                        \
     (((uint8_t) (CLAMP (a * 255.0, 0.0, 255.0)) << 24)                        \
       | ((uint8_t) (CLAMP (r * 255.0, 0.0, 255.0)) << 16)                     \
diff -urN plymouth-lite-0.6.0/ply-image.c plymouth-lite-0.6.0.change/ply-image.c
--- plymouth-lite-0.6.0/ply-image.c	2009-02-19 19:16:36.000000000 +0800
+++ plymouth-lite-0.6.0.change/ply-image.c	2009-06-13 17:42:52.000000000 +0800
@@ -43,6 +43,7 @@
 #include <png.h>
 
 #include <linux/fb.h>
+#include "ply-frame-buffer.h"
 
 #define MIN(a,b) ((a) <= (b)? (a) : (b))
 #define MAX(a,b) ((a) >= (b)? (a) : (b))
@@ -464,6 +465,8 @@
       return exit_code;
     }
 
+  image = ply_image_resize(image, buffer->area.width, buffer->area.height);
+
   animate_at_time (buffer, image);
 
   ply_frame_buffer_close (buffer);
