Without looking at your code, I can only make educated guesses.
Off the top of my head, VB4 and VB6 have a difference in certain data type alignments. Consider the following:
Option Explicit
Type MyType
l as Long
i as Integer
End Type
The size of MyType is 6 in VB4 and 8 in VB6. VB6 adds padding at the end of Long, because the space Long occupies must be a multiple of the Long data type. Also, Long starts at a byte that is a multiple of Long (4), and Integer starts at a byte that is a multiple of Integer (2).