That's unusual, but if that's the author intention then ok, send it over PM.
File format so far:
char[8] FLBD0101;
uint IMCHpointer;
uint unk;
padding[8]; //?
uint UnknownSHCHpointer; //0x28 + this
uint UnknownSPCHpointer; //0x28 + this
uint UnknownBTCHpointer; //0x28 + this
uint UnknownANCH0pointer; //0x28 + this
IMCH imch;
IMCH:
char[4] IMCH
uint IMCHsize; //including this + IMCH header
uint CountOfFrames; //This is global count of pointers to graphics;sprites;frames in file. It means one FLB can contain many graphics
uint SpritePointer[CountOfFrames]; //first one usually points to 0x00, so just: IMCHpointer+IMCHsize+pointer;
SpriteData:
byte[20] unknown_maybeChecksum?;
uint Unknown;
ushort width;
ushort height;
TEXTUREdata;
UPDATE:
Oh, ok. I got it! Updated the structure
Example summon_00f_bg1_full.flb is 256x512 and raw texture data is 524288 bytes;
256x512 is 131072; 393216 is dividable by:
Size: 1
Size: 2
Size: 3
Size: 4 <--
Size: 6
Size: 8
Size: 12
Size: 16
Size: 24
Size: 32
Size: 48
Size: 64
Size: 96
Size: 128
Size: 192
131072 * 4 = 524288;
So this is for sure 32 BPP data, therefore:

Are these colors ok?
Reimporting:As far as I see:
1. Inject upgraded/upscaled texture data
2. Change width/height
3. Tweak SHCH; SPCH; BTCH and ANCH0 pointers
4. Tweak IMCH pointers to texture data that got changed due to different imageSize after the pointer to changed textureData
5. Well, looks like that's all.

UPDATE2:
Diablos looks great! (ARGB -> BGRA/ABGR)
