In the following it does not seem that -annotate is properly respecting the specified (height) size. The resulting image is clipped from a specified height of 165 to 138..
Note the trim is not the reason for the clipped data. I added -trim so that the resulting sizes would be close. The trim can be removed and the image is still clipped.
convert -background none \
-fill skyblue -strokewidth 1 -stroke black -font Arial -pointsize 300 \
-gravity center label:"so" \
-trim +repage 2tmp1.png
identify 2tmp1.png
2tmp1.png PNG 298x165 298x165+0+0 16-bit sRGB 39KB 0.000u 0:00.000

convert -size 298x165 xc:none \
-fill skyblue -strokewidth 1 -stroke black -font Arial -pointsize 300 \
-gravity center -annotate 0x0+0+0 "so" \
-trim +repage 2tmp2.png
identify 2tmp2.png
2tmp2.png PNG 297x138 297x138+0+0 16-bit sRGB 31.7KB 0.000u 0:00.000

convert -size 298x165 xc:none \
-fill skyblue -strokewidth 1 -stroke black -font Arial -pointsize 300 -undercolor pink \
-gravity center -annotate 0x0+0+0 "so" \
-trim +repage 2tmp3.png
identify 2tmp3.png
2tmp3.png PNG 297x138 297x138+0+0 16-bit sRGB 30.5KB 0.000u 0:00.000

Is this a bug or am I misunderstanding ... -annotate?
It is even worse when using -gravity northwest.
convert -size 298x165 xc:none \
-fill skyblue -strokewidth 1 -stroke black -font Arial -pointsize 300 -undercolor pink \
-gravity northwest -annotate 0x0+0+0 "so" \
-trim +repage 5tmp3.png
identify 5tmp3.png
5tmp3.png PNG 285x52 285x52+0+0 16-bit sRGB 12.1KB 0.000u 0:00.000
