I actually prefer what you have now but if you want to maintain the height and width relationship of the image then you need to use the padding method as shown below.
#games{
height:auto;/* was 300px*/
}
#games div{
height: auto;/* was 100% */
position: relative;
text-align: center;
padding:18.75% 0 0;/* create relationship between width and height */
}
@media screen and (max-width:767px) {
#games div{padding:75% 0 0}
}
#games p{
width: 90%;
left: 5%;
padding: 10px;
position: absolute;
color: white;
font-size: 1.6em;
border: 1px solid white;
border-radius: 5px;
bottom: 10%;/* 50px is to tall on smaller screens */
}
Or simply remove the background images into foreground images and size the image at width:100% and height:auto;