0
Python 3.8 (pre-release), 116 115 bytes
lambda a,b,c,d,e='#',f='+':"\n".join((g:=[e*(a+2*c+2*d)]*d+[(h:=e*d)+f*(a+c*2)+h]*c)+[h+f*c+'X'*a+f*c+h]*b+g[::-1])
Try it online!
First attempt at golfing, will be improved soon.
Explanation coming soon!
a is width, b is height, c is matte width, an...