Index: oup/current/Global/OniImgClass.pas
===================================================================
--- oup/current/Global/OniImgClass.pas	(revision 193)
+++ oup/current/Global/OniImgClass.pas	(revision 194)
@@ -16,4 +16,5 @@
     function GetImageFormat: TImageFormat;
     procedure SetImageFormat(Format: TImageFormat);
+    function pGetImageFormatInfo: TImageFormatInfo;
     function GetHasMipMaps: Boolean;
   protected
@@ -24,4 +25,5 @@
     property Height[MipGen: Integer]: Integer   read GetHeight;
     property Format: TImageFormat read GetImageFormat write SetImageFormat;
+    property FormatInfo: TImageFormatInfo read pGetImageFormatInfo;
     property HasMipMaps: Boolean read GetHasMipMaps;
 
@@ -128,4 +130,11 @@
     for i := 0 to High(FImages) do
       ConvertImage(FImages[i], Format);
+end;
+
+
+function TOniImage.pGetImageFormatInfo: TImageFormatInfo;
+begin
+  if Length(FImages) > 0 then
+    GetImageFormatInfo(FImages[0].Format, Result);
 end;
 
Index: oup/current/Tools/Preview.dfm
===================================================================
--- oup/current/Tools/Preview.dfm	(revision 193)
+++ oup/current/Tools/Preview.dfm	(revision 194)
@@ -6,4 +6,7 @@
   PixelsPerInch = 96
   TextHeight = 13
+  inherited Splitter1: TSplitter
+    OnMoved = Splitter1Moved
+  end
   inherited content: TPanel
     object lbl_notpossible: TLabel
Index: oup/current/Tools/Preview.pas
===================================================================
--- oup/current/Tools/Preview.pas	(revision 193)
+++ oup/current/Tools/Preview.pas	(revision 194)
@@ -29,4 +29,5 @@
     procedure SetBitmapCount(Count: Integer);
     procedure LoadImage(fileid, index: Integer);
+    procedure Splitter1Moved(Sender: TObject);
   private
     bitmaps:   array of TOniImage;
@@ -41,5 +42,5 @@
 implementation
 {$R *.dfm}
-uses Imaging, ImagingComponents, ImagingTypes;
+uses Imaging, ImagingComponents, ImagingTypes, jpeg;
 
 
@@ -48,4 +49,5 @@
   inherited;
   Self.OnNewFileSelected := NewFile;
+  SetBitmapCount(0);
 end;
 
@@ -56,4 +58,5 @@
 begin
   _fileid := fileinfo.ID;
+  SetBitmapCount(0);
   if _fileid >= 0 then
   begin
@@ -115,4 +118,12 @@
 
 
+procedure TForm_Preview.Splitter1Moved(Sender: TObject);
+begin
+  inherited;
+  img.Picture.Assign(nil);
+  if Length(bitmaps) > 0 then
+    DrawImage(0);
+end;
+
 procedure TForm_Preview.PreviewImage;
 begin
@@ -160,4 +171,6 @@
   Self.btn_dec.Enabled := not Self.timer.Enabled;
   Self.btn_inc.Enabled := not Self.timer.Enabled;
+  if self.timer.Enabled then
+    timerTimer(Self);
   if Self.timer.Enabled then
     Self.btn_startstop.Caption := 'Stop automatic'
Index: oup/current/Tools/TxmpReplace.dfm
===================================================================
--- oup/current/Tools/TxmpReplace.dfm	(revision 193)
+++ oup/current/Tools/TxmpReplace.dfm	(revision 194)
@@ -8,4 +8,5 @@
   inherited Splitter1: TSplitter
     Height = 344
+    OnMoved = Splitter1Moved
     ExplicitHeight = 344
   end
@@ -104,5 +105,5 @@
           Width = 121
           Height = 25
-          Caption = 'Load BMP ...'
+          Caption = 'Load image...'
           TabOrder = 0
           OnClick = btn_loadClick
@@ -154,7 +155,8 @@
     DefaultExt = 'bmp'
     Filter = 
-      'All supported files (*.bmp, *.dds)|*.bmp;*.dds|Windows Bitmap (*' +
-      '.bmp)|*.bmp|DirectDraw Surface (*.dds)|*.dds|Targa (*.tga)|*.tga' +
-      '|JPEG (*.jpg, *.jpeg)|*.jpg;*.jpeg|All files (*.*)|*'
+      'All supported files (*.bmp, *.dds, *.tga, *.jpg, *.jpeg)|*.bmp;*' +
+      '.dds;*.tga;*.jpg;*.jpeg;*.png|Windows Bitmap (*.bmp)|*.bmp|Direc' +
+      'tDraw Surface (*.dds)|*.dds|Targa (*.tga)|*.tga|JPEG (*.jpg, *.j' +
+      'peg)|*.jpg;*.jpeg|PNG (*.png)|*.png|All files (*.*)|*'
     Options = [ofOverwritePrompt, ofHideReadOnly, ofPathMustExist, ofEnableSizing]
     Left = 104
Index: oup/current/Tools/TxmpReplace.pas
===================================================================
--- oup/current/Tools/TxmpReplace.pas	(revision 193)
+++ oup/current/Tools/TxmpReplace.pas	(revision 194)
@@ -28,4 +28,5 @@
     procedure btn_loadClick(Sender: TObject);
     procedure btn_replaceClick(Sender: TObject);
+    procedure Splitter1Moved(Sender: TObject);
   private
     OniImage_Old: TOniImage;
@@ -57,5 +58,5 @@
   OniImage_Old.LoadFromTXMP(ConnectionID, fileid);
   old_size := OniImage_Old.GetImageSize(True);
-  OniImage_Old.DrawOnCanvas(image_txmppreview.Canvas, 2);
+  OniImage_Old.DrawOnCanvas(image_txmppreview.Canvas, 1);
 
   check_fading.Checked := OniImage_Old.HasMipMaps;
@@ -66,4 +67,15 @@
 end;
 
+
+procedure TForm_TxmpReplace.Splitter1Moved(Sender: TObject);
+begin
+  inherited;
+  image_txmppreview.Picture.Assign(nil);
+  image_bmppreview.Picture.Assign(nil);
+  if Length(OniImage_Old.Images) > 0 then
+    OniImage_Old.DrawOnCanvas(image_txmppreview.Canvas, 1);
+  if Length(OniImage_New.Images) > 0 then
+    OniImage_New.DrawOnCanvas(image_bmppreview.Canvas, 1);
+end;
 
 procedure TForm_TxmpReplace.btn_loadClick(Sender: TObject);
@@ -90,4 +102,5 @@
   mem: TMemoryStream;
   new_storetype: Byte;
+  formatinfo: TImageFormatInfo;
 begin
   if filelist.ItemIndex >= 0 then
@@ -127,4 +140,11 @@
       ifDXT1: new_storetype := 9;
     else
+      if OniImage_New.FormatInfo.HasAlphaChannel then
+        ShowMessage('Loaded image has an alpha-channel.' + #13#10 +
+                    'Because the format is neither ARGB1555' +#13#10 +
+                    'nor ARGB4444 it can not be imported without conversion.' + #13#10 +
+                    'It is converted to RGB888, so alpha gets dropped.' + #13#10 +
+                    'If you need alpha you have to save your image in' + #13#10 +
+                    'one of the previously named formats.');  
       OniImage_New.Format := ifX8R8G8B8;
       new_storetype := 8;
@@ -164,4 +184,5 @@
 
     ShowMessage('TXMP-image replaced');
+    Self.listClick(Self);
   end;
 end;
