coplete rewrite of many methods to circumvent a CopyFromScreen issue