﻿Index: src/simutrans/descriptor/reader/image_reader.cc
===================================================================
--- src/simutrans/descriptor/reader/image_reader.cc	(revisi�n: 12125)
+++ src/simutrans/descriptor/reader/image_reader.cc	(copia de trabajo)
@@ -102,19 +102,14 @@
 
 #if COLOUR_DEPTH == 0
 adjust_image:
-	// reset image parameters, but only for non-empty images
-	if(  desc->h > 0  ) {
-		desc->h = 1;
-	}
-	if(  desc->w > 0  ) {
-		desc->w = 1;
-	}
+	// drop the pixels but keep x/y/w/h: descriptors derive data from them
+	// (building_desc_t::calc_height_clearance), and that must not depend on the backend
 	if(  desc->len > 0  ) {
-		desc->len = 4;
+		// alloc() releases the full size buffer read above; setting len alone would keep it,
+		// and these images no longer collapse into a single one further down
+		desc->alloc(4);
 		memset(desc->data, 0, desc->len*sizeof(PIXVAL));
 	}
-	desc->x = 0;
-	desc->y = 0;
 #else
 	if (!image_has_valid_data(desc)) {
 		delete desc;
@@ -123,7 +118,7 @@
 #endif
 
 	// check for left corner
-	if(version<2  &&  desc->h>0) {
+	if(COLOUR_DEPTH != 0  &&  version<2  &&  desc->h>0) {
 		// find left border
 		uint16 left = 255;
 		uint16 *dest = desc->data;
Index: src/simutrans/display/simgraph0.cc
===================================================================
--- src/simutrans/display/simgraph0.cc	(revisi�n: 12125)
+++ src/simutrans/display/simgraph0.cc	(copia de trabajo)
@@ -237,9 +237,13 @@
 {
 }
 
-static scr_coord_val simgraph0_set_base_raster_width(scr_coord_val)
+static scr_coord_val simgraph0_set_base_raster_width(scr_coord_val new_raster)
 {
-	return 0;
+	// nothing is drawn, but descriptors scale by it and must not differ from a graphical build
+	const scr_coord_val old = g_simgraph0.base_tile_raster_width;
+	g_simgraph0.base_tile_raster_width = new_raster;
+	g_simgraph0.tile_raster_width      = new_raster;
+	return old;
 }
 
 void set_zoom_factor(int)
Index: src/simutrans/descriptor/ground_desc.cc
===================================================================
--- src/simutrans/descriptor/ground_desc.cc	(revisi�n: 12125)
+++ src/simutrans/descriptor/ground_desc.cc	(copia de trabajo)
@@ -102,7 +102,8 @@
  */
 static image_t* create_alpha_tile(const image_t* image_lightmap, slope_t::type slope, const image_t* image_alphamap)
 {
-	if(  image_lightmap == NULL  ||  image_alphamap == NULL  ||  image_alphamap->get_pic()->w < 2  ) {
+	// without a backend the pixels were dropped at load, only the size is left
+	if(  COLOUR_DEPTH == 0  ||  image_lightmap == NULL  ||  image_alphamap == NULL  ||  image_alphamap->get_pic()->w < 2  ) {
 		image_t *image_dest = image_t::create_single_pixel();
 		image_dest->register_image();
 		return image_dest;
@@ -233,7 +234,8 @@
 // copy ref texture, copy pixels from image into new texture
 static image_t* create_texture_from_tile(const image_t* image, const image_t* ref)
 {
-	if(  image == NULL  ||  image->get_pic()->w < 2  ) {
+	// without a backend the pixels were dropped at load, only the size is left
+	if(  COLOUR_DEPTH == 0  ||  image == NULL  ||  image->get_pic()->w < 2  ) {
 		image_t *image_dest = image_t::create_single_pixel();
 		return image_dest;
 	}
