While reading the code, there are a few things to know about GR32 stuff.

---

First, DrawMode is a bit confusing with all the names and concepts. However,
it is relatively simple, once deciphered. And understanding it is vital to
understand how the whole core works.

1) Setting TBitmap32.DrawMode does not change anything massive. The overhead
   coming from frequent changes to it is negligible in comparison to actual
   draws. Thus it is always safer to just overdo it with setting draw modes.

2)   dmBlend = use alpha channel to merge colours;
     dmOpaque = copy raw data from one buffer to another.
   Thus, when a part of picture should replace the old one and has transparent
   areas, dmOpaqe must be used. (typically in undo)

3) DrawMode applies to source of drawing, not destination. This means that if
   I want to draw A to B with some drawing mode, I have to do one of these:

     A.DrawMode:= dm...;
     A.DrawTo(...B...);

     A.DrawMode:= dm...;
     B.Draw(...A...);

---

TBitmap32.SetSize is just as lightweight, in case the size does not have to
change, so initializations and clearings can use it without second thought. I'm
not sure if it is also non-destructive in case the size is same, but this is
not important as all calls are in places where original data are discarded.

---

Order of bytes is ARGB, while some picture formats use RGBA - as a matter of
fact, PNG does so...

---

