Index: oup/current/DataAccess/DataAccess.pas
===================================================================
--- oup/current/DataAccess/DataAccess.pas	(revision 192)
+++ oup/current/DataAccess/DataAccess.pas	(revision 193)
@@ -61,5 +61,5 @@
     function AppendRawFile(LocSep: Boolean; Src: TStream): Integer; overload; virtual;
     function AppendRawFile(LocSep: Boolean; Src: TByteData): Integer; overload;
-    function AppendRawFile(LocSep: Boolean; Size: Integer; Src: Pointer): Integer; overload;
+//    function AppendRawFile(LocSep: Boolean; Size: Integer; Src: Pointer): Integer; overload;
   published
   end;
@@ -277,5 +277,5 @@
   data.Free;
 end;
-
+{
 function TDataAccess.AppendRawFile(LocSep: Boolean; Size: Integer; Src: Pointer): Integer;
 var
@@ -288,5 +288,5 @@
   data.Free;
 end;
-
+}
 
 
Index: oup/current/Global/OniImgClass.pas
===================================================================
--- oup/current/Global/OniImgClass.pas	(revision 192)
+++ oup/current/Global/OniImgClass.pas	(revision 193)
@@ -56,5 +56,5 @@
 begin
   InitImage(singleimg);
-  CloneImage(FImages[Index], singleimg);
+  CloneImage(FImages[Index-1], singleimg);
   ConvertImage(singleimg, ifX8R8G8B8);
   rect.Left := 0;
@@ -424,8 +424,24 @@
   else
     ConManager.Connection[ConnectionID].LoadRawFile(fileid, $A0, TStream(data));
+
+//  data.Seek(0, soFromBeginning);
+//  data.SaveToFile('m:\test.txmp');
+
   data.Seek(0, soFromBeginning);
   result := LoadMultiImageFromStream(data, FImages);
   data.Free;
-
+{
+  if result then
+  begin
+    for i := 0 to High(FImages) do
+    begin
+      data := TMemoryStream.Create;
+      data.Write(FImages[i].Bits^, FImages[i].Size);
+      data.Seek(0, soFromBeginning);
+      data.SaveToFile('m:\test.txmp.'+IntToStr(i));
+      data.Free;
+    end;
+  end;
+}
   if not result then
   begin
Index: oup/current/Tools/Preview.pas
===================================================================
--- oup/current/Tools/Preview.pas	(revision 192)
+++ oup/current/Tools/Preview.pas	(revision 193)
@@ -91,5 +91,5 @@
 procedure TForm_Preview.DrawImage(index: Integer);
 begin
-  bitmaps[index].DrawOnCanvas(img.Canvas, 0);
+  bitmaps[index].DrawOnCanvas(img.Canvas, 1);
 end;
 
Index: oup/current/Tools/TxmpReplace.pas
===================================================================
--- oup/current/Tools/TxmpReplace.pas	(revision 192)
+++ oup/current/Tools/TxmpReplace.pas	(revision 193)
@@ -57,5 +57,5 @@
   OniImage_Old.LoadFromTXMP(ConnectionID, fileid);
   old_size := OniImage_Old.GetImageSize(True);
-  OniImage_Old.DrawOnCanvas(image_txmppreview.Canvas, 0);
+  OniImage_Old.DrawOnCanvas(image_txmppreview.Canvas, 2);
 
   check_fading.Checked := OniImage_Old.HasMipMaps;
@@ -74,5 +74,5 @@
   begin
     OniImage_New.LoadFromFile(opend.FileName);
-    OniImage_New.DrawOnCanvas(image_bmppreview.Canvas, 0);
+    OniImage_New.DrawOnCanvas(image_bmppreview.Canvas, 1);
     group_options.Enabled := True;
   end;
@@ -89,4 +89,5 @@
   datbyte: Word;
   mem: TMemoryStream;
+  new_storetype: Byte;
 begin
   if filelist.ItemIndex >= 0 then
@@ -115,4 +116,19 @@
     mem := TMemoryStream.Create;
 
+    case OniImage_New.Format of
+      ifA1R5G5B5: new_storetype := 2;
+      ifA4R4G4B4: new_storetype := 0;
+      ifA8R8G8B8:
+        begin
+          new_storetype := 8;
+          OniImage_New.Format := ifX8R8G8B8;
+        end;
+      ifX8R8G8B8: new_storetype := 8;
+      ifDXT1: new_storetype := 9;
+    else
+      OniImage_New.Format := ifX8R8G8B8;
+      new_storetype := 8;
+    end;
+
     OniImage_New.SaveDataToStream(check_fading.Checked, TStream(mem));
 
@@ -122,6 +138,5 @@
     if (newsize > old_size) and (ConManager.Connection[ConnectionID].Backend = DB_ONI) then
       new_rawaddr := ConManager.Connection[ConnectionID].AppendRawFile(
-        not (ConManager.Connection[ConnectionID].DataOS = DOS_WIN),
-        mem.Size, mem)
+        not (ConManager.Connection[ConnectionID].DataOS = DOS_WIN), mem)
     else
     begin
@@ -142,19 +157,5 @@
     datbyte := OniImage_New.Height[1];
     ConManager.Connection[ConnectionID].UpdateDatFilePart(fileid, $8E, 2, @datbyte);
-    case OniImage_New.Format of
-      ifA1R5G5B5: datbyte := 2;
-      ifA4R4G4B4: datbyte := 0;
-      ifA8R8G8B8:
-        begin
-          datbyte := 8;
-          OniImage_New.Format := ifX8R8G8B8;
-        end;
-      ifX8R8G8B8: datbyte := 8;
-      ifDXT1: datbyte := 9;
-    else
-      OniImage_New.Format := ifX8R8G8B8;
-      datbyte := 8;
-    end;
-    ConManager.Connection[ConnectionID].UpdateDatFilePart(fileid, $90, 1, @datbyte);
+    ConManager.Connection[ConnectionID].UpdateDatFilePart(fileid, $90, 1, @new_storetype);
     if not (ConManager.Connection[ConnectionID].DataOS = DOS_WIN) then
       ConManager.Connection[ConnectionID].UpdateDatFilePart(fileid, $A0, 4, @new_rawaddr)
